From 0dfbdf6e54e73a71823907a60aeb62717a4c81df Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Sat, 3 Oct 2015 21:17:37 -0700 Subject: [PATCH 001/111] Added grpc_cq_alarm --- src/core/surface/completion_queue.c | 35 +++++++++++++++++++ src/core/surface/completion_queue.h | 27 +++++++++++++++ test/core/surface/completion_queue_test.c | 42 +++++++++++++++++++++++ 3 files changed, 104 insertions(+) diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 5dac8ebcf8b..368838860f5 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -44,6 +44,7 @@ #include #include #include +#include typedef struct { grpc_pollset_worker *worker; @@ -354,3 +355,37 @@ grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc) { void grpc_cq_mark_server_cq(grpc_completion_queue *cc) { cc->is_server_cq = 1; } int grpc_cq_is_server_cq(grpc_completion_queue *cc) { return cc->is_server_cq; } + +static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg, + grpc_cq_completion *c) {} + +static void cq_alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, int success) { + grpc_cq_alarm *cq_alarm = arg; + grpc_cq_end_op(exec_ctx, cq_alarm->cq, cq_alarm->tag, success, + do_nothing_end_completion, NULL, &cq_alarm->completion); +} + +grpc_cq_alarm *grpc_cq_alarm_create(grpc_exec_ctx *exec_ctx, + grpc_completion_queue *cq, + gpr_timespec deadline, void *tag) { + grpc_cq_alarm *cq_alarm = gpr_malloc(sizeof(grpc_cq_alarm)); + + GRPC_CQ_INTERNAL_REF(cq, "cq_alarm"); + cq_alarm->cq = cq; + cq_alarm->tag = tag; + + grpc_alarm_init(exec_ctx, &cq_alarm->alarm, deadline, cq_alarm_cb, cq_alarm, + gpr_now(GPR_CLOCK_MONOTONIC)); + grpc_cq_begin_op(cq); + return cq_alarm; +} + +void grpc_cq_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm) { + grpc_alarm_cancel(exec_ctx, &cq_alarm->alarm); +} + +void grpc_cq_alarm_destroy(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm) { + grpc_cq_alarm_cancel(exec_ctx, cq_alarm); + GRPC_CQ_INTERNAL_UNREF(cq_alarm->cq, "cq_alarm"); + gpr_free(cq_alarm); +} diff --git a/src/core/surface/completion_queue.h b/src/core/surface/completion_queue.h index 5f8282e5429..ab5b87c5c8b 100644 --- a/src/core/surface/completion_queue.h +++ b/src/core/surface/completion_queue.h @@ -36,6 +36,7 @@ /* Internal API for completion queues */ +#include "src/core/iomgr/alarm.h" #include "src/core/iomgr/pollset.h" #include @@ -51,6 +52,16 @@ typedef struct grpc_cq_completion { gpr_uintptr next; } grpc_cq_completion; +/** An alarm associated with a completion queue. */ +typedef struct grpc_cq_alarm { + grpc_alarm alarm; + grpc_cq_completion completion; + /** completion queue where events about this alarm will be posted */ + grpc_completion_queue *cq; + /** user supplied tag */ + void *tag; +} grpc_cq_alarm; + #ifdef GRPC_CQ_REF_COUNT_DEBUG void grpc_cq_internal_ref(grpc_completion_queue *cc, const char *reason, const char *file, int line); @@ -83,4 +94,20 @@ grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc); void grpc_cq_mark_server_cq(grpc_completion_queue *cc); int grpc_cq_is_server_cq(grpc_completion_queue *cc); +/** Create a completion queue alarm instance associated to \a cq. + * + * Once the alarm expires (at \a deadline) or it's cancelled (see ...), an event + * with tag \a tag will be added to \a cq. If the alarm expired, the event's + * success bit will be true, false otherwise (ie, upon cancellation). */ +grpc_cq_alarm *grpc_cq_alarm_create(grpc_exec_ctx *exec_ctx, + grpc_completion_queue *cq, + gpr_timespec deadline, void *tag); + +/** Cancel a completion queue alarm. Calling this function ove an alarm that has + * already run has no effect. */ +void grpc_cq_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm); + +/** Destroy the given completion queue alarm, cancelling it in the process. */ +void grpc_cq_alarm_destroy(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm); + #endif /* GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H */ diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c index e3fc7897884..785093c60fc 100644 --- a/test/core/surface/completion_queue_test.c +++ b/test/core/surface/completion_queue_test.c @@ -102,6 +102,47 @@ static void test_cq_end_op(void) { grpc_exec_ctx_finish(&exec_ctx); } +static void test_cq_alarm(void) { + grpc_completion_queue *cc; + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + + LOG_TEST("test_cq_alarm"); + cc = grpc_completion_queue_create(NULL); + { + /* regular expiry */ + grpc_event ev; + void *tag = create_test_tag(); + grpc_cq_alarm *cq_alarm = grpc_cq_alarm_create( + &exec_ctx, cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), tag); + + ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), + NULL); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + GPR_ASSERT(ev.tag == tag); + GPR_ASSERT(ev.success); + grpc_cq_alarm_destroy(&exec_ctx, cq_alarm); + } + { + /* cancellation */ + grpc_event ev; + void *tag = create_test_tag(); + grpc_cq_alarm *cq_alarm = grpc_cq_alarm_create( + &exec_ctx, cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), tag); + + grpc_cq_alarm_cancel(&exec_ctx, cq_alarm); + GPR_ASSERT(grpc_exec_ctx_flush(&exec_ctx) == 1); + ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), + NULL); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + GPR_ASSERT(ev.tag == tag); + GPR_ASSERT(ev.success == 0); + grpc_cq_alarm_destroy(&exec_ctx, cq_alarm); + } + + shutdown_and_destroy(cc); + grpc_exec_ctx_finish(&exec_ctx); +} + static void test_shutdown_then_next_polling(void) { grpc_completion_queue *cc; grpc_event event; @@ -343,6 +384,7 @@ int main(int argc, char **argv) { test_shutdown_then_next_with_timeout(); test_cq_end_op(); test_pluck(); + test_cq_alarm(); test_threading(1, 1); test_threading(1, 10); test_threading(10, 1); From cb954cfc2858829fe7bff785b1a5d5204bfd338f Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Sun, 4 Oct 2015 14:52:13 -0700 Subject: [PATCH 002/111] Removed exec_ctx from cq_alarm's functions --- src/core/surface/completion_queue.c | 17 ++++++++++------- src/core/surface/completion_queue.h | 7 +++---- test/core/surface/completion_queue_test.c | 18 +++++++----------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 368838860f5..31ec1b68dae 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -365,27 +365,30 @@ static void cq_alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, int success) { do_nothing_end_completion, NULL, &cq_alarm->completion); } -grpc_cq_alarm *grpc_cq_alarm_create(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, +grpc_cq_alarm *grpc_cq_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline, void *tag) { grpc_cq_alarm *cq_alarm = gpr_malloc(sizeof(grpc_cq_alarm)); + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; GRPC_CQ_INTERNAL_REF(cq, "cq_alarm"); cq_alarm->cq = cq; cq_alarm->tag = tag; - grpc_alarm_init(exec_ctx, &cq_alarm->alarm, deadline, cq_alarm_cb, cq_alarm, + grpc_alarm_init(&exec_ctx, &cq_alarm->alarm, deadline, cq_alarm_cb, cq_alarm, gpr_now(GPR_CLOCK_MONOTONIC)); grpc_cq_begin_op(cq); + grpc_exec_ctx_finish(&exec_ctx); return cq_alarm; } -void grpc_cq_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm) { - grpc_alarm_cancel(exec_ctx, &cq_alarm->alarm); +void grpc_cq_alarm_cancel(grpc_cq_alarm *cq_alarm) { + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_alarm_cancel(&exec_ctx, &cq_alarm->alarm); + grpc_exec_ctx_finish(&exec_ctx); } -void grpc_cq_alarm_destroy(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm) { - grpc_cq_alarm_cancel(exec_ctx, cq_alarm); +void grpc_cq_alarm_destroy(grpc_cq_alarm *cq_alarm) { + grpc_cq_alarm_cancel(cq_alarm); GRPC_CQ_INTERNAL_UNREF(cq_alarm->cq, "cq_alarm"); gpr_free(cq_alarm); } diff --git a/src/core/surface/completion_queue.h b/src/core/surface/completion_queue.h index ab5b87c5c8b..12a7e9a147a 100644 --- a/src/core/surface/completion_queue.h +++ b/src/core/surface/completion_queue.h @@ -99,15 +99,14 @@ int grpc_cq_is_server_cq(grpc_completion_queue *cc); * Once the alarm expires (at \a deadline) or it's cancelled (see ...), an event * with tag \a tag will be added to \a cq. If the alarm expired, the event's * success bit will be true, false otherwise (ie, upon cancellation). */ -grpc_cq_alarm *grpc_cq_alarm_create(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, +grpc_cq_alarm *grpc_cq_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline, void *tag); /** Cancel a completion queue alarm. Calling this function ove an alarm that has * already run has no effect. */ -void grpc_cq_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm); +void grpc_cq_alarm_cancel(grpc_cq_alarm *cq_alarm); /** Destroy the given completion queue alarm, cancelling it in the process. */ -void grpc_cq_alarm_destroy(grpc_exec_ctx *exec_ctx, grpc_cq_alarm *cq_alarm); +void grpc_cq_alarm_destroy(grpc_cq_alarm *cq_alarm); #endif /* GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H */ diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c index 785093c60fc..16bccc36091 100644 --- a/test/core/surface/completion_queue_test.c +++ b/test/core/surface/completion_queue_test.c @@ -104,7 +104,6 @@ static void test_cq_end_op(void) { static void test_cq_alarm(void) { grpc_completion_queue *cc; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; LOG_TEST("test_cq_alarm"); cc = grpc_completion_queue_create(NULL); @@ -112,35 +111,32 @@ static void test_cq_alarm(void) { /* regular expiry */ grpc_event ev; void *tag = create_test_tag(); - grpc_cq_alarm *cq_alarm = grpc_cq_alarm_create( - &exec_ctx, cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), tag); + grpc_cq_alarm *cq_alarm = + grpc_cq_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), tag); ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), NULL); GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); GPR_ASSERT(ev.tag == tag); GPR_ASSERT(ev.success); - grpc_cq_alarm_destroy(&exec_ctx, cq_alarm); + grpc_cq_alarm_destroy(cq_alarm); } { /* cancellation */ grpc_event ev; void *tag = create_test_tag(); - grpc_cq_alarm *cq_alarm = grpc_cq_alarm_create( - &exec_ctx, cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), tag); + grpc_cq_alarm *cq_alarm = + grpc_cq_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), tag); - grpc_cq_alarm_cancel(&exec_ctx, cq_alarm); - GPR_ASSERT(grpc_exec_ctx_flush(&exec_ctx) == 1); + grpc_cq_alarm_cancel(cq_alarm); ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), NULL); GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); GPR_ASSERT(ev.tag == tag); GPR_ASSERT(ev.success == 0); - grpc_cq_alarm_destroy(&exec_ctx, cq_alarm); + grpc_cq_alarm_destroy(cq_alarm); } - shutdown_and_destroy(cc); - grpc_exec_ctx_finish(&exec_ctx); } static void test_shutdown_then_next_polling(void) { From f747bbc04327c9ef02690cd7466ec6786967c4fe Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Sun, 4 Oct 2015 23:09:47 -0700 Subject: [PATCH 003/111] s/grpc_alarm/grpc_timer && s/grpc_cq_alarm/grpc_alarm --- BUILD | 33 ++-- Makefile | 172 +++++++++------- build.yaml | 61 +++--- gRPC.podspec | 18 +- grpc.gyp | 75 ++++--- include/grpc/grpc.h | 18 ++ src/core/client_config/subchannel.c | 8 +- src/core/iomgr/iocp_windows.c | 2 +- src/core/iomgr/iomgr.c | 8 +- src/core/iomgr/pollset_posix.c | 4 +- src/core/iomgr/pollset_windows.c | 4 +- src/core/iomgr/tcp_client_posix.c | 8 +- src/core/iomgr/tcp_client_windows.c | 8 +- src/core/iomgr/tcp_windows.c | 2 +- src/core/iomgr/{alarm.c => timer.c} | 172 ++++++++-------- src/core/iomgr/{alarm.h => timer.h} | 50 ++--- src/core/iomgr/{alarm_heap.c => timer_heap.c} | 82 ++++---- src/core/iomgr/{alarm_heap.h => timer_heap.h} | 32 +-- .../{alarm_internal.h => timer_internal.h} | 24 +-- src/core/surface/alarm.c | 83 ++++++++ src/core/surface/call.c | 10 +- src/core/surface/channel_connectivity.c | 8 +- src/core/surface/completion_queue.c | 47 +---- src/core/surface/completion_queue.h | 26 --- .../{alarm_heap_test.c => timer_heap_test.c} | 118 +++++------ .../{alarm_list_test.c => timer_list_test.c} | 56 +++--- test/core/surface/alarm_test.c | 100 ++++++++++ test/core/surface/completion_queue_test.c | 38 ---- tools/buildgen/generate_projects.py | 4 +- tools/doxygen/Doxyfile.core.internal | 11 +- tools/run_tests/sources_and_headers.json | 104 +++++----- tools/run_tests/tests.json | 90 +++++---- vsprojects/buildtests_c.sln | 135 ++++++++----- vsprojects/vcxproj/grpc/grpc.vcxproj | 16 +- vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 33 ++-- .../grpc_unsecure/grpc_unsecure.vcxproj | 16 +- .../grpc_unsecure.vcxproj.filters | 33 ++-- .../grpc_alarm_test/grpc_alarm_test.vcxproj | 184 ++++++++++++++++++ .../grpc_alarm_test.vcxproj.filters | 21 ++ .../timer_heap_test.vcxproj} | 8 +- .../timer_heap_test.vcxproj.filters} | 8 +- .../timer_list_test.vcxproj} | 8 +- .../timer_list_test.vcxproj.filters} | 8 +- 43 files changed, 1199 insertions(+), 747 deletions(-) rename src/core/iomgr/{alarm.c => timer.c} (67%) rename src/core/iomgr/{alarm.h => timer.h} (68%) rename src/core/iomgr/{alarm_heap.c => timer_heap.c} (62%) rename src/core/iomgr/{alarm_heap.h => timer_heap.h} (68%) rename src/core/iomgr/{alarm_internal.h => timer_internal.h} (78%) create mode 100644 src/core/surface/alarm.c rename test/core/iomgr/{alarm_heap_test.c => timer_heap_test.c} (70%) rename test/core/iomgr/{alarm_list_test.c => timer_list_test.c} (78%) create mode 100644 test/core/surface/alarm_test.c create mode 100644 vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj create mode 100644 vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj.filters rename vsprojects/vcxproj/test/{alarm_list_test/alarm_list_test.vcxproj => timer_heap_test/timer_heap_test.vcxproj} (98%) rename vsprojects/vcxproj/test/{alarm_heap_test/alarm_heap_test.vcxproj.filters => timer_heap_test/timer_heap_test.vcxproj.filters} (64%) rename vsprojects/vcxproj/test/{alarm_heap_test/alarm_heap_test.vcxproj => timer_list_test/timer_list_test.vcxproj} (98%) rename vsprojects/vcxproj/test/{alarm_list_test/alarm_list_test.vcxproj.filters => timer_list_test/timer_list_test.vcxproj.filters} (64%) diff --git a/BUILD b/BUILD index c8118089bef..0914d7bf7f7 100644 --- a/BUILD +++ b/BUILD @@ -177,9 +177,6 @@ cc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -207,6 +204,9 @@ cc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -311,8 +311,6 @@ cc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -343,6 +341,8 @@ cc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -356,6 +356,7 @@ cc_library( "src/core/json/json_writer.c", "src/core/profiling/basic_timers.c", "src/core/profiling/stap_timers.c", + "src/core/surface/alarm.c", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_reader.c", @@ -462,9 +463,6 @@ cc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -492,6 +490,9 @@ cc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -576,8 +577,6 @@ cc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -608,6 +607,8 @@ cc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -621,6 +622,7 @@ cc_library( "src/core/json/json_writer.c", "src/core/profiling/basic_timers.c", "src/core/profiling/stap_timers.c", + "src/core/surface/alarm.c", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_reader.c", @@ -1100,8 +1102,6 @@ objc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -1132,6 +1132,8 @@ objc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -1145,6 +1147,7 @@ objc_library( "src/core/json/json_writer.c", "src/core/profiling/basic_timers.c", "src/core/profiling/stap_timers.c", + "src/core/surface/alarm.c", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_reader.c", @@ -1248,9 +1251,6 @@ objc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -1278,6 +1278,9 @@ objc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", diff --git a/Makefile b/Makefile index e0a7b804721..1bf88ccaf12 100644 --- a/Makefile +++ b/Makefile @@ -777,8 +777,6 @@ systemtap_dep_error: stop: @false -alarm_heap_test: $(BINDIR)/$(CONFIG)/alarm_heap_test -alarm_list_test: $(BINDIR)/$(CONFIG)/alarm_list_test alpn_test: $(BINDIR)/$(CONFIG)/alpn_test bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test chttp2_status_conversion_test: $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test @@ -810,6 +808,7 @@ gpr_thd_test: $(BINDIR)/$(CONFIG)/gpr_thd_test gpr_time_test: $(BINDIR)/$(CONFIG)/gpr_time_test gpr_tls_test: $(BINDIR)/$(CONFIG)/gpr_tls_test gpr_useful_test: $(BINDIR)/$(CONFIG)/gpr_useful_test +grpc_alarm_test: $(BINDIR)/$(CONFIG)/grpc_alarm_test grpc_auth_context_test: $(BINDIR)/$(CONFIG)/grpc_auth_context_test grpc_base64_test: $(BINDIR)/$(CONFIG)/grpc_base64_test grpc_byte_buffer_reader_test: $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test @@ -849,6 +848,8 @@ tcp_posix_test: $(BINDIR)/$(CONFIG)/tcp_posix_test tcp_server_posix_test: $(BINDIR)/$(CONFIG)/tcp_server_posix_test time_averaged_stats_test: $(BINDIR)/$(CONFIG)/time_averaged_stats_test timeout_encoding_test: $(BINDIR)/$(CONFIG)/timeout_encoding_test +timer_heap_test: $(BINDIR)/$(CONFIG)/timer_heap_test +timer_list_test: $(BINDIR)/$(CONFIG)/timer_list_test timers_test: $(BINDIR)/$(CONFIG)/timers_test transport_metadata_test: $(BINDIR)/$(CONFIG)/transport_metadata_test transport_security_test: $(BINDIR)/$(CONFIG)/transport_security_test @@ -1733,7 +1734,7 @@ endif buildtests: buildtests_c buildtests_cxx buildtests_zookeeper -buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test +buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_alarm_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timer_heap_test $(BINDIR)/$(CONFIG)/timer_list_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test buildtests_cxx: buildtests_zookeeper privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/auth_property_iterator_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/client_crash_test $(BINDIR)/$(CONFIG)/client_crash_test_server $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test $(BINDIR)/$(CONFIG)/cxx_slice_test $(BINDIR)/$(CONFIG)/cxx_string_ref_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/qps_interarrival_test $(BINDIR)/$(CONFIG)/qps_openloop_test $(BINDIR)/$(CONFIG)/qps_test $(BINDIR)/$(CONFIG)/reconnect_interop_client $(BINDIR)/$(CONFIG)/reconnect_interop_server $(BINDIR)/$(CONFIG)/secure_auth_context_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/streaming_throughput_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test @@ -1749,10 +1750,6 @@ test: test_c test_cxx test_zookeeper flaky_test: flaky_test_c flaky_test_cxx flaky_test_zookeeper test_c: buildtests_c - $(E) "[RUN] Testing alarm_heap_test" - $(Q) $(BINDIR)/$(CONFIG)/alarm_heap_test || ( echo test alarm_heap_test failed ; exit 1 ) - $(E) "[RUN] Testing alarm_list_test" - $(Q) $(BINDIR)/$(CONFIG)/alarm_list_test || ( echo test alarm_list_test failed ; exit 1 ) $(E) "[RUN] Testing alpn_test" $(Q) $(BINDIR)/$(CONFIG)/alpn_test || ( echo test alpn_test failed ; exit 1 ) $(E) "[RUN] Testing bin_encoder_test" @@ -1807,6 +1804,8 @@ test_c: buildtests_c $(Q) $(BINDIR)/$(CONFIG)/gpr_tls_test || ( echo test gpr_tls_test failed ; exit 1 ) $(E) "[RUN] Testing gpr_useful_test" $(Q) $(BINDIR)/$(CONFIG)/gpr_useful_test || ( echo test gpr_useful_test failed ; exit 1 ) + $(E) "[RUN] Testing grpc_alarm_test" + $(Q) $(BINDIR)/$(CONFIG)/grpc_alarm_test || ( echo test grpc_alarm_test failed ; exit 1 ) $(E) "[RUN] Testing grpc_auth_context_test" $(Q) $(BINDIR)/$(CONFIG)/grpc_auth_context_test || ( echo test grpc_auth_context_test failed ; exit 1 ) $(E) "[RUN] Testing grpc_base64_test" @@ -1873,6 +1872,10 @@ test_c: buildtests_c $(Q) $(BINDIR)/$(CONFIG)/time_averaged_stats_test || ( echo test time_averaged_stats_test failed ; exit 1 ) $(E) "[RUN] Testing timeout_encoding_test" $(Q) $(BINDIR)/$(CONFIG)/timeout_encoding_test || ( echo test timeout_encoding_test failed ; exit 1 ) + $(E) "[RUN] Testing timer_heap_test" + $(Q) $(BINDIR)/$(CONFIG)/timer_heap_test || ( echo test timer_heap_test failed ; exit 1 ) + $(E) "[RUN] Testing timer_list_test" + $(Q) $(BINDIR)/$(CONFIG)/timer_list_test || ( echo test timer_list_test failed ; exit 1 ) $(E) "[RUN] Testing timers_test" $(Q) $(BINDIR)/$(CONFIG)/timers_test || ( echo test timers_test failed ; exit 1 ) $(E) "[RUN] Testing transport_metadata_test" @@ -4074,8 +4077,6 @@ LIBGRPC_SRC = \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ - src/core/iomgr/alarm.c \ - src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -4106,6 +4107,8 @@ LIBGRPC_SRC = \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ + src/core/iomgr/timer.c \ + src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ @@ -4119,6 +4122,7 @@ LIBGRPC_SRC = \ src/core/json/json_writer.c \ src/core/profiling/basic_timers.c \ src/core/profiling/stap_timers.c \ + src/core/surface/alarm.c \ src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_reader.c \ @@ -4356,8 +4360,6 @@ LIBGRPC_UNSECURE_SRC = \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ - src/core/iomgr/alarm.c \ - src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -4388,6 +4390,8 @@ LIBGRPC_UNSECURE_SRC = \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ + src/core/iomgr/timer.c \ + src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ @@ -4401,6 +4405,7 @@ LIBGRPC_UNSECURE_SRC = \ src/core/json/json_writer.c \ src/core/profiling/basic_timers.c \ src/core/profiling/stap_timers.c \ + src/core/surface/alarm.c \ src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_reader.c \ @@ -6559,64 +6564,6 @@ endif # All of the test targets, and protoc plugins -ALARM_HEAP_TEST_SRC = \ - test/core/iomgr/alarm_heap_test.c \ - -ALARM_HEAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_HEAP_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/alarm_heap_test: openssl_dep_error - -else - -$(BINDIR)/$(CONFIG)/alarm_heap_test: $(ALARM_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - $(E) "[LD] Linking $@" - $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(ALARM_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/alarm_heap_test - -endif - -$(OBJDIR)/$(CONFIG)/test/core/iomgr/alarm_heap_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_alarm_heap_test: $(ALARM_HEAP_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(ALARM_HEAP_TEST_OBJS:.o=.dep) -endif -endif - - -ALARM_LIST_TEST_SRC = \ - test/core/iomgr/alarm_list_test.c \ - -ALARM_LIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_LIST_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/alarm_list_test: openssl_dep_error - -else - -$(BINDIR)/$(CONFIG)/alarm_list_test: $(ALARM_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - $(E) "[LD] Linking $@" - $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(ALARM_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/alarm_list_test - -endif - -$(OBJDIR)/$(CONFIG)/test/core/iomgr/alarm_list_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_alarm_list_test: $(ALARM_LIST_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(ALARM_LIST_TEST_OBJS:.o=.dep) -endif -endif - - ALPN_TEST_SRC = \ test/core/transport/chttp2/alpn_test.c \ @@ -7516,6 +7463,35 @@ endif endif +GRPC_ALARM_TEST_SRC = \ + test/core/surface/alarm_test.c \ + +GRPC_ALARM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_ALARM_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/grpc_alarm_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/grpc_alarm_test: $(GRPC_ALARM_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(GRPC_ALARM_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/grpc_alarm_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/surface/alarm_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_grpc_alarm_test: $(GRPC_ALARM_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(GRPC_ALARM_TEST_OBJS:.o=.dep) +endif +endif + + GRPC_AUTH_CONTEXT_TEST_SRC = \ test/core/security/auth_context_test.c \ @@ -8647,6 +8623,64 @@ endif endif +TIMER_HEAP_TEST_SRC = \ + test/core/iomgr/timer_heap_test.c \ + +TIMER_HEAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_HEAP_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/timer_heap_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/timer_heap_test: $(TIMER_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(TIMER_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/timer_heap_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/iomgr/timer_heap_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_timer_heap_test: $(TIMER_HEAP_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(TIMER_HEAP_TEST_OBJS:.o=.dep) +endif +endif + + +TIMER_LIST_TEST_SRC = \ + test/core/iomgr/timer_list_test.c \ + +TIMER_LIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_LIST_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/timer_list_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/timer_list_test: $(TIMER_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(TIMER_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/timer_list_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/iomgr/timer_list_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_timer_list_test: $(TIMER_LIST_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(TIMER_LIST_TEST_OBJS:.o=.dep) +endif +endif + + TIMERS_TEST_SRC = \ test/core/profiling/timers_test.c \ diff --git a/build.yaml b/build.yaml index 32dfa34df6e..3e8ec0156ac 100644 --- a/build.yaml +++ b/build.yaml @@ -137,9 +137,6 @@ filegroups: - src/core/httpcli/format_request.h - src/core/httpcli/httpcli.h - src/core/httpcli/parser.h - - src/core/iomgr/alarm.h - - src/core/iomgr/alarm_heap.h - - src/core/iomgr/alarm_internal.h - src/core/iomgr/closure.h - src/core/iomgr/endpoint.h - src/core/iomgr/endpoint_pair.h @@ -167,6 +164,9 @@ filegroups: - src/core/iomgr/tcp_server.h - src/core/iomgr/tcp_windows.h - src/core/iomgr/time_averaged_stats.h + - src/core/iomgr/timer.h + - src/core/iomgr/timer_heap.h + - src/core/iomgr/timer_internal.h - src/core/iomgr/udp_server.h - src/core/iomgr/wakeup_fd_pipe.h - src/core/iomgr/wakeup_fd_posix.h @@ -248,8 +248,6 @@ filegroups: - src/core/httpcli/format_request.c - src/core/httpcli/httpcli.c - src/core/httpcli/parser.c - - src/core/iomgr/alarm.c - - src/core/iomgr/alarm_heap.c - src/core/iomgr/closure.c - src/core/iomgr/endpoint.c - src/core/iomgr/endpoint_pair_posix.c @@ -280,6 +278,8 @@ filegroups: - src/core/iomgr/tcp_server_windows.c - src/core/iomgr/tcp_windows.c - src/core/iomgr/time_averaged_stats.c + - src/core/iomgr/timer.c + - src/core/iomgr/timer_heap.c - src/core/iomgr/udp_server.c - src/core/iomgr/wakeup_fd_eventfd.c - src/core/iomgr/wakeup_fd_nospecial.c @@ -293,6 +293,7 @@ filegroups: - src/core/json/json_writer.c - src/core/profiling/basic_timers.c - src/core/profiling/stap_timers.c + - src/core/surface/alarm.c - src/core/surface/byte_buffer.c - src/core/surface/byte_buffer_queue.c - src/core/surface/byte_buffer_reader.c @@ -780,26 +781,6 @@ libs: - winsock - global targets: -- name: alarm_heap_test - build: test - language: c - src: - - test/core/iomgr/alarm_heap_test.c - deps: - - grpc_test_util - - grpc - - gpr_test_util - - gpr -- name: alarm_list_test - build: test - language: c - src: - - test/core/iomgr/alarm_list_test.c - deps: - - grpc_test_util - - grpc - - gpr_test_util - - gpr - name: alpn_test build: test language: c @@ -1096,6 +1077,16 @@ targets: deps: - gpr_test_util - gpr +- name: grpc_alarm_test + build: test + language: c + src: + - test/core/surface/alarm_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr - name: grpc_auth_context_test build: test language: c @@ -1507,6 +1498,26 @@ targets: - grpc - gpr_test_util - gpr +- name: timer_heap_test + build: test + language: c + src: + - test/core/iomgr/timer_heap_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr +- name: timer_list_test + build: test + language: c + src: + - test/core/iomgr/timer_list_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr - name: timers_test build: test language: c diff --git a/gRPC.podspec b/gRPC.podspec index 46823453bab..ece3d527f3c 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -46,6 +46,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/grpc/grpc.git', :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" } + s.ios.deployment_target = '7.1' s.osx.deployment_target = '10.9' s.requires_arc = true @@ -180,9 +181,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/parser.h', - 'src/core/iomgr/alarm.h', - 'src/core/iomgr/alarm_heap.h', - 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/closure.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', @@ -210,6 +208,9 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/timer.h', + 'src/core/iomgr/timer_heap.h', + 'src/core/iomgr/timer_internal.h', 'src/core/iomgr/udp_server.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', @@ -321,8 +322,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -353,6 +352,8 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -366,6 +367,7 @@ Pod::Spec.new do |s| 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', + 'src/core/surface/alarm.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_reader.c', @@ -470,9 +472,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/parser.h', - 'src/core/iomgr/alarm.h', - 'src/core/iomgr/alarm_heap.h', - 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/closure.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', @@ -500,6 +499,9 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/timer.h', + 'src/core/iomgr/timer_heap.h', + 'src/core/iomgr/timer_internal.h', 'src/core/iomgr/udp_server.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', diff --git a/grpc.gyp b/grpc.gyp index 60179f04ff7..480a4a6ae40 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -203,8 +203,6 @@ 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -235,6 +233,8 @@ 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -248,6 +248,7 @@ 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', + 'src/core/surface/alarm.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_reader.c', @@ -389,8 +390,6 @@ 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -421,6 +420,8 @@ 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -434,6 +435,7 @@ 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', + 'src/core/surface/alarm.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_reader.c', @@ -1263,32 +1265,6 @@ 'test/core/bad_client/bad_client.c', ], }, - { - 'target_name': 'alarm_heap_test', - 'type': 'executable', - 'dependencies': [ - 'grpc_test_util', - 'grpc', - 'gpr_test_util', - 'gpr', - ], - 'sources': [ - 'test/core/iomgr/alarm_heap_test.c', - ] - }, - { - 'target_name': 'alarm_list_test', - 'type': 'executable', - 'dependencies': [ - 'grpc_test_util', - 'grpc', - 'gpr_test_util', - 'gpr', - ], - 'sources': [ - 'test/core/iomgr/alarm_list_test.c', - ] - }, { 'target_name': 'alpn_test', 'type': 'executable', @@ -1656,6 +1632,19 @@ 'test/core/support/useful_test.c', ] }, + { + 'target_name': 'grpc_alarm_test', + 'type': 'executable', + 'dependencies': [ + 'grpc_test_util', + 'grpc', + 'gpr_test_util', + 'gpr', + ], + 'sources': [ + 'test/core/surface/alarm_test.c', + ] + }, { 'target_name': 'grpc_auth_context_test', 'type': 'executable', @@ -2159,6 +2148,32 @@ 'test/core/transport/chttp2/timeout_encoding_test.c', ] }, + { + 'target_name': 'timer_heap_test', + 'type': 'executable', + 'dependencies': [ + 'grpc_test_util', + 'grpc', + 'gpr_test_util', + 'gpr', + ], + 'sources': [ + 'test/core/iomgr/timer_heap_test.c', + ] + }, + { + 'target_name': 'timer_list_test', + 'type': 'executable', + 'dependencies': [ + 'grpc_test_util', + 'grpc', + 'gpr_test_util', + 'gpr', + ], + 'sources': [ + 'test/core/iomgr/timer_list_test.c', + ] + }, { 'target_name': 'timers_test', 'type': 'executable', diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 0c854a5b0cd..84102c0c756 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -56,6 +56,9 @@ extern "C" { actions. */ typedef struct grpc_completion_queue grpc_completion_queue; +/** An alarm associated with a completion queue. */ +typedef struct grpc_alarm grpc_alarm; + /** The Channel interface allows creation of Call objects. */ typedef struct grpc_channel grpc_channel; @@ -475,6 +478,21 @@ void grpc_completion_queue_shutdown(grpc_completion_queue *cq); drained and no threads are executing grpc_completion_queue_next */ void grpc_completion_queue_destroy(grpc_completion_queue *cq); +/** Create a completion queue alarm instance associated to \a cq. + * + * Once the alarm expires (at \a deadline) or it's cancelled (see ...), an event + * with tag \a tag will be added to \a cq. If the alarm expired, the event's + * success bit will be true, false otherwise (ie, upon cancellation). */ +grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline, + void *tag); + +/** Cancel a completion queue alarm. Calling this function ove an alarm that has + * already run has no effect. */ +void grpc_alarm_cancel(grpc_alarm *alarm); + +/** Destroy the given completion queue alarm, cancelling it in the process. */ +void grpc_alarm_destroy(grpc_alarm *alarm); + /** Check the connectivity state of a channel. */ grpc_connectivity_state grpc_channel_check_connectivity_state( grpc_channel *channel, int try_to_connect); diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c index a2c521a20d9..d9472025dad 100644 --- a/src/core/client_config/subchannel.c +++ b/src/core/client_config/subchannel.c @@ -40,7 +40,7 @@ #include "src/core/channel/channel_args.h" #include "src/core/channel/client_channel.h" #include "src/core/channel/connected_channel.h" -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/transport/connectivity_state.h" #include "src/core/surface/channel.h" @@ -130,7 +130,7 @@ struct grpc_subchannel { /** do we have an active alarm? */ int have_alarm; /** our alarm */ - grpc_alarm alarm; + grpc_timer alarm; /** current random value */ gpr_uint32 random; }; @@ -459,7 +459,7 @@ void grpc_subchannel_process_transport_op(grpc_exec_ctx *exec_ctx, } if (cancel_alarm) { - grpc_alarm_cancel(exec_ctx, &c->alarm); + grpc_timer_cancel(exec_ctx, &c->alarm); } if (op->disconnect) { @@ -690,7 +690,7 @@ static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg, GPR_ASSERT(!c->have_alarm); c->have_alarm = 1; connectivity_state_changed_locked(exec_ctx, c, "connect_failed"); - grpc_alarm_init(exec_ctx, &c->alarm, c->next_attempt, on_alarm, c, now); + grpc_timer_init(exec_ctx, &c->alarm, c->next_attempt, on_alarm, c, now); gpr_mu_unlock(&c->mu); } } diff --git a/src/core/iomgr/iocp_windows.c b/src/core/iomgr/iocp_windows.c index cebd8639240..65da3a9d2d6 100644 --- a/src/core/iomgr/iocp_windows.c +++ b/src/core/iomgr/iocp_windows.c @@ -42,7 +42,7 @@ #include #include -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_internal.h" #include "src/core/iomgr/iocp_windows.h" #include "src/core/iomgr/iomgr_internal.h" #include "src/core/iomgr/socket_windows.h" diff --git a/src/core/iomgr/iomgr.c b/src/core/iomgr/iomgr.c index e61fc32925f..212ce5534dd 100644 --- a/src/core/iomgr/iomgr.c +++ b/src/core/iomgr/iomgr.c @@ -43,7 +43,7 @@ #include #include "src/core/iomgr/iomgr_internal.h" -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_internal.h" #include "src/core/support/string.h" static gpr_mu g_mu; @@ -55,7 +55,7 @@ void grpc_iomgr_init(void) { g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); - grpc_alarm_list_init(gpr_now(GPR_CLOCK_MONOTONIC)); + grpc_timer_list_init(gpr_now(GPR_CLOCK_MONOTONIC)); g_root_object.next = g_root_object.prev = &g_root_object; g_root_object.name = "root"; grpc_iomgr_platform_init(); @@ -98,7 +98,7 @@ void grpc_iomgr_shutdown(void) { } last_warning_time = gpr_now(GPR_CLOCK_REALTIME); } - if (grpc_alarm_check(&exec_ctx, gpr_inf_future(GPR_CLOCK_MONOTONIC), + if (grpc_timer_check(&exec_ctx, gpr_inf_future(GPR_CLOCK_MONOTONIC), NULL)) { gpr_mu_unlock(&g_mu); grpc_exec_ctx_flush(&exec_ctx); @@ -124,7 +124,7 @@ void grpc_iomgr_shutdown(void) { } gpr_mu_unlock(&g_mu); - grpc_alarm_list_shutdown(&exec_ctx); + grpc_timer_list_shutdown(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx); /* ensure all threads have left g_mu */ diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 464c1f6ae3f..4ba1bda1a9b 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -42,7 +42,7 @@ #include #include -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_internal.h" #include "src/core/iomgr/fd_posix.h" #include "src/core/iomgr/iomgr_internal.h" #include "src/core/iomgr/socket_utils_posix.h" @@ -204,7 +204,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs); goto done; } - if (grpc_alarm_check(exec_ctx, now, &deadline)) { + if (grpc_timer_check(exec_ctx, now, &deadline)) { gpr_mu_unlock(&pollset->mu); locked = 0; goto done; diff --git a/src/core/iomgr/pollset_windows.c b/src/core/iomgr/pollset_windows.c index 96abaea0b36..9f745802739 100644 --- a/src/core/iomgr/pollset_windows.c +++ b/src/core/iomgr/pollset_windows.c @@ -37,7 +37,7 @@ #include -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_internal.h" #include "src/core/iomgr/iomgr_internal.h" #include "src/core/iomgr/iocp_windows.h" #include "src/core/iomgr/pollset.h" @@ -136,7 +136,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, worker->kicked = 0; worker->pollset = pollset; gpr_cv_init(&worker->cv); - if (grpc_alarm_check(exec_ctx, now, &deadline)) { + if (grpc_timer_check(exec_ctx, now, &deadline)) { goto done; } if (!pollset->kicked_without_pollers && !pollset->shutting_down) { diff --git a/src/core/iomgr/tcp_client_posix.c b/src/core/iomgr/tcp_client_posix.c index 346566866a2..037964a97c0 100644 --- a/src/core/iomgr/tcp_client_posix.c +++ b/src/core/iomgr/tcp_client_posix.c @@ -42,7 +42,7 @@ #include #include -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/iomgr/iomgr_posix.h" #include "src/core/iomgr/pollset_posix.h" #include "src/core/iomgr/sockaddr_utils.h" @@ -60,7 +60,7 @@ typedef struct { gpr_mu mu; grpc_fd *fd; gpr_timespec deadline; - grpc_alarm alarm; + grpc_timer alarm; int refs; grpc_closure write_closure; grpc_pollset_set *interested_parties; @@ -132,7 +132,7 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, int success) { ac->fd = NULL; gpr_mu_unlock(&ac->mu); - grpc_alarm_cancel(exec_ctx, &ac->alarm); + grpc_timer_cancel(exec_ctx, &ac->alarm); gpr_mu_lock(&ac->mu); if (success) { @@ -284,7 +284,7 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, } gpr_mu_lock(&ac->mu); - grpc_alarm_init(exec_ctx, &ac->alarm, + grpc_timer_init(exec_ctx, &ac->alarm, gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), tc_on_alarm, ac, gpr_now(GPR_CLOCK_MONOTONIC)); grpc_fd_notify_on_write(exec_ctx, ac->fd, &ac->write_closure); diff --git a/src/core/iomgr/tcp_client_windows.c b/src/core/iomgr/tcp_client_windows.c index 3540c556764..e5691b7e121 100644 --- a/src/core/iomgr/tcp_client_windows.c +++ b/src/core/iomgr/tcp_client_windows.c @@ -43,7 +43,7 @@ #include #include -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/iomgr/iocp_windows.h" #include "src/core/iomgr/tcp_client.h" #include "src/core/iomgr/tcp_windows.h" @@ -56,7 +56,7 @@ typedef struct { gpr_mu mu; grpc_winsocket *socket; gpr_timespec deadline; - grpc_alarm alarm; + grpc_timer alarm; char *addr_name; int refs; grpc_closure on_connect; @@ -91,7 +91,7 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, int from_iocp) { grpc_winsocket_callback_info *info = &ac->socket->write_info; grpc_closure *on_done = ac->on_done; - grpc_alarm_cancel(exec_ctx, &ac->alarm); + grpc_timer_cancel(exec_ctx, &ac->alarm); gpr_mu_lock(&ac->mu); @@ -201,7 +201,7 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_done, ac->endpoint = endpoint; grpc_closure_init(&ac->on_connect, on_connect, ac); - grpc_alarm_init(exec_ctx, &ac->alarm, deadline, on_alarm, ac, + grpc_timer_init(exec_ctx, &ac->alarm, deadline, on_alarm, ac, gpr_now(GPR_CLOCK_MONOTONIC)); grpc_socket_notify_on_write(exec_ctx, socket, &ac->on_connect); return; diff --git a/src/core/iomgr/tcp_windows.c b/src/core/iomgr/tcp_windows.c index 9ceffca0654..5ff78231bd7 100644 --- a/src/core/iomgr/tcp_windows.c +++ b/src/core/iomgr/tcp_windows.c @@ -44,7 +44,7 @@ #include #include -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/iomgr/iocp_windows.h" #include "src/core/iomgr/sockaddr.h" #include "src/core/iomgr/sockaddr_utils.h" diff --git a/src/core/iomgr/alarm.c b/src/core/iomgr/timer.c similarity index 67% rename from src/core/iomgr/alarm.c rename to src/core/iomgr/timer.c index 0ba53616064..66fafe75adc 100644 --- a/src/core/iomgr/alarm.c +++ b/src/core/iomgr/timer.c @@ -31,10 +31,10 @@ * */ -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" -#include "src/core/iomgr/alarm_heap.h" -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_heap.h" +#include "src/core/iomgr/timer_internal.h" #include "src/core/iomgr/time_averaged_stats.h" #include #include @@ -51,37 +51,37 @@ typedef struct { gpr_mu mu; grpc_time_averaged_stats stats; - /* All and only alarms with deadlines <= this will be in the heap. */ + /* All and only timers with deadlines <= this will be in the heap. */ gpr_timespec queue_deadline_cap; gpr_timespec min_deadline; /* Index in the g_shard_queue */ gpr_uint32 shard_queue_index; - /* This holds all alarms with deadlines < queue_deadline_cap. Alarms in this + /* This holds all timers with deadlines < queue_deadline_cap. Timers in this list have the top bit of their deadline set to 0. */ - grpc_alarm_heap heap; - /* This holds alarms whose deadline is >= queue_deadline_cap. */ - grpc_alarm list; + grpc_timer_heap heap; + /* This holds timers whose deadline is >= queue_deadline_cap. */ + grpc_timer list; } shard_type; /* Protects g_shard_queue */ static gpr_mu g_mu; -/* Allow only one run_some_expired_alarms at once */ +/* Allow only one run_some_expired_timers at once */ static gpr_mu g_checker_mu; static gpr_clock_type g_clock_type; static shard_type g_shards[NUM_SHARDS]; /* Protected by g_mu */ static shard_type *g_shard_queue[NUM_SHARDS]; -static int run_some_expired_alarms(grpc_exec_ctx *exec_ctx, gpr_timespec now, +static int run_some_expired_timers(grpc_exec_ctx *exec_ctx, gpr_timespec now, gpr_timespec *next, int success); static gpr_timespec compute_min_deadline(shard_type *shard) { - return grpc_alarm_heap_is_empty(&shard->heap) + return grpc_timer_heap_is_empty(&shard->heap) ? shard->queue_deadline_cap - : grpc_alarm_heap_top(&shard->heap)->deadline; + : grpc_timer_heap_top(&shard->heap)->deadline; } -void grpc_alarm_list_init(gpr_timespec now) { +void grpc_timer_list_init(gpr_timespec now) { gpr_uint32 i; gpr_mu_init(&g_mu); @@ -95,27 +95,27 @@ void grpc_alarm_list_init(gpr_timespec now) { 0.5); shard->queue_deadline_cap = now; shard->shard_queue_index = i; - grpc_alarm_heap_init(&shard->heap); + grpc_timer_heap_init(&shard->heap); shard->list.next = shard->list.prev = &shard->list; shard->min_deadline = compute_min_deadline(shard); g_shard_queue[i] = shard; } } -void grpc_alarm_list_shutdown(grpc_exec_ctx *exec_ctx) { +void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) { int i; - run_some_expired_alarms(exec_ctx, gpr_inf_future(g_clock_type), NULL, 0); + run_some_expired_timers(exec_ctx, gpr_inf_future(g_clock_type), NULL, 0); for (i = 0; i < NUM_SHARDS; i++) { shard_type *shard = &g_shards[i]; gpr_mu_destroy(&shard->mu); - grpc_alarm_heap_destroy(&shard->heap); + grpc_timer_heap_destroy(&shard->heap); } gpr_mu_destroy(&g_mu); gpr_mu_destroy(&g_checker_mu); } /* This is a cheap, but good enough, pointer hash for sharding the tasks: */ -static size_t shard_idx(const grpc_alarm *info) { +static size_t shard_idx(const grpc_timer *info) { size_t x = (size_t)info; return ((x >> 4) ^ (x >> 9) ^ (x >> 14)) & (NUM_SHARDS - 1); } @@ -132,15 +132,15 @@ static gpr_timespec dbl_to_ts(double d) { return ts; } -static void list_join(grpc_alarm *head, grpc_alarm *alarm) { - alarm->next = head; - alarm->prev = head->prev; - alarm->next->prev = alarm->prev->next = alarm; +static void list_join(grpc_timer *head, grpc_timer *timer) { + timer->next = head; + timer->prev = head->prev; + timer->next->prev = timer->prev->next = timer; } -static void list_remove(grpc_alarm *alarm) { - alarm->next->prev = alarm->prev; - alarm->prev->next = alarm->next; +static void list_remove(grpc_timer *timer) { + timer->next->prev = timer->prev; + timer->prev->next = timer->next; } static void swap_adjacent_shards_in_queue(gpr_uint32 first_shard_queue_index) { @@ -170,16 +170,16 @@ static void note_deadline_change(shard_type *shard) { } } -void grpc_alarm_init(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm, - gpr_timespec deadline, grpc_iomgr_cb_func alarm_cb, - void *alarm_cb_arg, gpr_timespec now) { - int is_first_alarm = 0; - shard_type *shard = &g_shards[shard_idx(alarm)]; +void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, + gpr_timespec deadline, grpc_iomgr_cb_func timer_cb, + void *timer_cb_arg, gpr_timespec now) { + int is_first_timer = 0; + shard_type *shard = &g_shards[shard_idx(timer)]; GPR_ASSERT(deadline.clock_type == g_clock_type); GPR_ASSERT(now.clock_type == g_clock_type); - grpc_closure_init(&alarm->closure, alarm_cb, alarm_cb_arg); - alarm->deadline = deadline; - alarm->triggered = 0; + grpc_closure_init(&timer->closure, timer_cb, timer_cb_arg); + timer->deadline = deadline; + timer->triggered = 0; /* TODO(ctiller): check deadline expired */ @@ -187,25 +187,25 @@ void grpc_alarm_init(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm, grpc_time_averaged_stats_add_sample(&shard->stats, ts_to_dbl(gpr_time_sub(deadline, now))); if (gpr_time_cmp(deadline, shard->queue_deadline_cap) < 0) { - is_first_alarm = grpc_alarm_heap_add(&shard->heap, alarm); + is_first_timer = grpc_timer_heap_add(&shard->heap, timer); } else { - alarm->heap_index = INVALID_HEAP_INDEX; - list_join(&shard->list, alarm); + timer->heap_index = INVALID_HEAP_INDEX; + list_join(&shard->list, timer); } gpr_mu_unlock(&shard->mu); /* Deadline may have decreased, we need to adjust the master queue. Note that there is a potential racy unlocked region here. There could be a - reordering of multiple grpc_alarm_init calls, at this point, but the < test + reordering of multiple grpc_timer_init calls, at this point, but the < test below should ensure that we err on the side of caution. There could - also be a race with grpc_alarm_check, which might beat us to the lock. In - that case, it is possible that the alarm that we added will have already + also be a race with grpc_timer_check, which might beat us to the lock. In + that case, it is possible that the timer that we added will have already run by the time we hold the lock, but that too is a safe error. - Finally, it's possible that the grpc_alarm_check that intervened failed to - trigger the new alarm because the min_deadline hadn't yet been reduced. - In that case, the alarm will simply have to wait for the next - grpc_alarm_check. */ - if (is_first_alarm) { + Finally, it's possible that the grpc_timer_check that intervened failed to + trigger the new timer because the min_deadline hadn't yet been reduced. + In that case, the timer will simply have to wait for the next + grpc_timer_check. */ + if (is_first_timer) { gpr_mu_lock(&g_mu); if (gpr_time_cmp(deadline, shard->min_deadline) < 0) { gpr_timespec old_min_deadline = g_shard_queue[0]->min_deadline; @@ -220,16 +220,16 @@ void grpc_alarm_init(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm, } } -void grpc_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm) { - shard_type *shard = &g_shards[shard_idx(alarm)]; +void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) { + shard_type *shard = &g_shards[shard_idx(timer)]; gpr_mu_lock(&shard->mu); - if (!alarm->triggered) { - grpc_exec_ctx_enqueue(exec_ctx, &alarm->closure, 0); - alarm->triggered = 1; - if (alarm->heap_index == INVALID_HEAP_INDEX) { - list_remove(alarm); + if (!timer->triggered) { + grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, 0); + timer->triggered = 1; + if (timer->heap_index == INVALID_HEAP_INDEX) { + list_remove(timer); } else { - grpc_alarm_heap_remove(&shard->heap, alarm); + grpc_timer_heap_remove(&shard->heap, timer); } } gpr_mu_unlock(&shard->mu); @@ -237,7 +237,7 @@ void grpc_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm) { /* This is called when the queue is empty and "now" has reached the queue_deadline_cap. We compute a new queue deadline and then scan the map - for alarms that fall at or under it. Returns true if the queue is no + for timers that fall at or under it. Returns true if the queue is no longer empty. REQUIRES: shard->mu locked */ static int refill_queue(shard_type *shard, gpr_timespec now) { @@ -248,49 +248,49 @@ static int refill_queue(shard_type *shard, gpr_timespec now) { double deadline_delta = GPR_CLAMP(computed_deadline_delta, MIN_QUEUE_WINDOW_DURATION, MAX_QUEUE_WINDOW_DURATION); - grpc_alarm *alarm, *next; + grpc_timer *timer, *next; - /* Compute the new cap and put all alarms under it into the queue: */ + /* Compute the new cap and put all timers under it into the queue: */ shard->queue_deadline_cap = gpr_time_add( gpr_time_max(now, shard->queue_deadline_cap), dbl_to_ts(deadline_delta)); - for (alarm = shard->list.next; alarm != &shard->list; alarm = next) { - next = alarm->next; + for (timer = shard->list.next; timer != &shard->list; timer = next) { + next = timer->next; - if (gpr_time_cmp(alarm->deadline, shard->queue_deadline_cap) < 0) { - list_remove(alarm); - grpc_alarm_heap_add(&shard->heap, alarm); + if (gpr_time_cmp(timer->deadline, shard->queue_deadline_cap) < 0) { + list_remove(timer); + grpc_timer_heap_add(&shard->heap, timer); } } - return !grpc_alarm_heap_is_empty(&shard->heap); + return !grpc_timer_heap_is_empty(&shard->heap); } -/* This pops the next non-cancelled alarm with deadline <= now from the queue, +/* This pops the next non-cancelled timer with deadline <= now from the queue, or returns NULL if there isn't one. REQUIRES: shard->mu locked */ -static grpc_alarm *pop_one(shard_type *shard, gpr_timespec now) { - grpc_alarm *alarm; +static grpc_timer *pop_one(shard_type *shard, gpr_timespec now) { + grpc_timer *timer; for (;;) { - if (grpc_alarm_heap_is_empty(&shard->heap)) { + if (grpc_timer_heap_is_empty(&shard->heap)) { if (gpr_time_cmp(now, shard->queue_deadline_cap) < 0) return NULL; if (!refill_queue(shard, now)) return NULL; } - alarm = grpc_alarm_heap_top(&shard->heap); - if (gpr_time_cmp(alarm->deadline, now) > 0) return NULL; - alarm->triggered = 1; - grpc_alarm_heap_pop(&shard->heap); - return alarm; + timer = grpc_timer_heap_top(&shard->heap); + if (gpr_time_cmp(timer->deadline, now) > 0) return NULL; + timer->triggered = 1; + grpc_timer_heap_pop(&shard->heap); + return timer; } } /* REQUIRES: shard->mu unlocked */ -static size_t pop_alarms(grpc_exec_ctx *exec_ctx, shard_type *shard, +static size_t pop_timers(grpc_exec_ctx *exec_ctx, shard_type *shard, gpr_timespec now, gpr_timespec *new_min_deadline, int success) { size_t n = 0; - grpc_alarm *alarm; + grpc_timer *timer; gpr_mu_lock(&shard->mu); - while ((alarm = pop_one(shard, now))) { - grpc_exec_ctx_enqueue(exec_ctx, &alarm->closure, success); + while ((timer = pop_one(shard, now))) { + grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, success); n++; } *new_min_deadline = compute_min_deadline(shard); @@ -298,11 +298,11 @@ static size_t pop_alarms(grpc_exec_ctx *exec_ctx, shard_type *shard, return n; } -static int run_some_expired_alarms(grpc_exec_ctx *exec_ctx, gpr_timespec now, +static int run_some_expired_timers(grpc_exec_ctx *exec_ctx, gpr_timespec now, gpr_timespec *next, int success) { size_t n = 0; - /* TODO(ctiller): verify that there are any alarms (atomically) here */ + /* TODO(ctiller): verify that there are any timers (atomically) here */ if (gpr_mu_trylock(&g_checker_mu)) { gpr_mu_lock(&g_mu); @@ -310,16 +310,16 @@ static int run_some_expired_alarms(grpc_exec_ctx *exec_ctx, gpr_timespec now, while (gpr_time_cmp(g_shard_queue[0]->min_deadline, now) < 0) { gpr_timespec new_min_deadline; - /* For efficiency, we pop as many available alarms as we can from the - shard. This may violate perfect alarm deadline ordering, but that + /* For efficiency, we pop as many available timers as we can from the + shard. This may violate perfect timer deadline ordering, but that shouldn't be a big deal because we don't make ordering guarantees. */ - n += pop_alarms(exec_ctx, g_shard_queue[0], now, &new_min_deadline, + n += pop_timers(exec_ctx, g_shard_queue[0], now, &new_min_deadline, success); - /* An grpc_alarm_init() on the shard could intervene here, adding a new - alarm that is earlier than new_min_deadline. However, - grpc_alarm_init() will block on the master_lock before it can call - set_min_deadline, so this one will complete first and then the AddAlarm + /* An grpc_timer_init() on the shard could intervene here, adding a new + timer that is earlier than new_min_deadline. However, + grpc_timer_init() will block on the master_lock before it can call + set_min_deadline, so this one will complete first and then the Addtimer will reduce the min_deadline (perhaps unnecessarily). */ g_shard_queue[0]->min_deadline = new_min_deadline; note_deadline_change(g_shard_queue[0]); @@ -336,15 +336,15 @@ static int run_some_expired_alarms(grpc_exec_ctx *exec_ctx, gpr_timespec now, return (int)n; } -int grpc_alarm_check(grpc_exec_ctx *exec_ctx, gpr_timespec now, +int grpc_timer_check(grpc_exec_ctx *exec_ctx, gpr_timespec now, gpr_timespec *next) { GPR_ASSERT(now.clock_type == g_clock_type); - return run_some_expired_alarms( + return run_some_expired_timers( exec_ctx, now, next, gpr_time_cmp(now, gpr_inf_future(now.clock_type)) != 0); } -gpr_timespec grpc_alarm_list_next_timeout(void) { +gpr_timespec grpc_timer_list_next_timeout(void) { gpr_timespec out; gpr_mu_lock(&g_mu); out = g_shard_queue[0]->min_deadline; diff --git a/src/core/iomgr/alarm.h b/src/core/iomgr/timer.h similarity index 68% rename from src/core/iomgr/alarm.h rename to src/core/iomgr/timer.h index 94f9bc1355e..9abe58133d0 100644 --- a/src/core/iomgr/alarm.h +++ b/src/core/iomgr/timer.h @@ -31,59 +31,59 @@ * */ -#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_H -#define GRPC_INTERNAL_CORE_IOMGR_ALARM_H +#ifndef GRPC_INTERNAL_CORE_IOMGR_TIMER_H +#define GRPC_INTERNAL_CORE_IOMGR_TIMER_H #include "src/core/iomgr/iomgr.h" #include "src/core/iomgr/exec_ctx.h" #include #include -typedef struct grpc_alarm { +typedef struct grpc_timer { gpr_timespec deadline; gpr_uint32 heap_index; /* INVALID_HEAP_INDEX if not in heap */ int triggered; - struct grpc_alarm *next; - struct grpc_alarm *prev; + struct grpc_timer *next; + struct grpc_timer *prev; grpc_closure closure; -} grpc_alarm; +} grpc_timer; -/* Initialize *alarm. When expired or canceled, alarm_cb will be called with - *alarm_cb_arg and status to indicate if it expired (SUCCESS) or was - canceled (CANCELLED). alarm_cb is guaranteed to be called exactly once, +/* Initialize *timer. When expired or canceled, timer_cb will be called with + *timer_cb_arg and status to indicate if it expired (SUCCESS) or was + canceled (CANCELLED). timer_cb is guaranteed to be called exactly once, and application code should check the status to determine how it was invoked. The application callback is also responsible for maintaining information about when to free up any user-level state. */ -void grpc_alarm_init(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm, - gpr_timespec deadline, grpc_iomgr_cb_func alarm_cb, - void *alarm_cb_arg, gpr_timespec now); +void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, + gpr_timespec deadline, grpc_iomgr_cb_func timer_cb, + void *timer_cb_arg, gpr_timespec now); -/* Note that there is no alarm destroy function. This is because the - alarm is a one-time occurrence with a guarantee that the callback will +/* Note that there is no timer destroy function. This is because the + timer is a one-time occurrence with a guarantee that the callback will be called exactly once, either at expiration or cancellation. Thus, all - the internal alarm event management state is destroyed just before + the internal timer event management state is destroyed just before that callback is invoked. If the user has additional state associated with - the alarm, the user is responsible for determining when it is safe to + the timer, the user is responsible for determining when it is safe to destroy that state. */ -/* Cancel an *alarm. +/* Cancel an *timer. There are three cases: - 1. We normally cancel the alarm - 2. The alarm has already run - 3. We can't cancel the alarm because it is "in flight". + 1. We normally cancel the timer + 2. The timer has already run + 3. We can't cancel the timer because it is "in flight". In all of these cases, the cancellation is still considered successful. - They are essentially distinguished in that the alarm_cb will be run + They are essentially distinguished in that the timer_cb will be run exactly once from either the cancellation (with status CANCELLED) or from the activation (with status SUCCESS) Note carefully that the callback function MAY occur in the same callstack - as grpc_alarm_cancel. It's expected that most alarms will be cancelled (their + as grpc_timer_cancel. It's expected that most timers will be cancelled (their primary use is to implement deadlines), and so this code is optimized such that cancellation costs as little as possible. Making callbacks run inline matches this aim. - Requires: cancel() must happen after add() on a given alarm */ -void grpc_alarm_cancel(grpc_exec_ctx *exec_ctx, grpc_alarm *alarm); + Requires: cancel() must happen after add() on a given timer */ +void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TIMER_H */ diff --git a/src/core/iomgr/alarm_heap.c b/src/core/iomgr/timer_heap.c similarity index 62% rename from src/core/iomgr/alarm_heap.c rename to src/core/iomgr/timer_heap.c index 769142e425d..31d41d67508 100644 --- a/src/core/iomgr/alarm_heap.c +++ b/src/core/iomgr/timer_heap.c @@ -31,7 +31,7 @@ * */ -#include "src/core/iomgr/alarm_heap.h" +#include "src/core/iomgr/timer_heap.h" #include @@ -43,7 +43,7 @@ position. This functor is called each time immediately after modifying a value in the underlying container, with the offset of the modified element as its argument. */ -static void adjust_upwards(grpc_alarm **first, gpr_uint32 i, grpc_alarm *t) { +static void adjust_upwards(grpc_timer **first, gpr_uint32 i, grpc_timer *t) { while (i > 0) { gpr_uint32 parent = (gpr_uint32)(((int)i - 1) / 2); if (gpr_time_cmp(first[parent]->deadline, t->deadline) >= 0) break; @@ -58,8 +58,8 @@ static void adjust_upwards(grpc_alarm **first, gpr_uint32 i, grpc_alarm *t) { /* Adjusts a heap so as to move a hole at position i farther away from the root, until a suitable position is found for element t. Then, copies t into that position. */ -static void adjust_downwards(grpc_alarm **first, gpr_uint32 i, - gpr_uint32 length, grpc_alarm *t) { +static void adjust_downwards(grpc_timer **first, gpr_uint32 i, + gpr_uint32 length, grpc_timer *t) { for (;;) { gpr_uint32 left_child = 1u + 2u * i; gpr_uint32 right_child; @@ -83,66 +83,66 @@ static void adjust_downwards(grpc_alarm **first, gpr_uint32 i, #define SHRINK_MIN_ELEMS 8 #define SHRINK_FULLNESS_FACTOR 2 -static void maybe_shrink(grpc_alarm_heap *heap) { - if (heap->alarm_count >= 8 && - heap->alarm_count <= heap->alarm_capacity / SHRINK_FULLNESS_FACTOR / 2) { - heap->alarm_capacity = heap->alarm_count * SHRINK_FULLNESS_FACTOR; - heap->alarms = - gpr_realloc(heap->alarms, heap->alarm_capacity * sizeof(grpc_alarm *)); +static void maybe_shrink(grpc_timer_heap *heap) { + if (heap->timer_count >= 8 && + heap->timer_count <= heap->timer_capacity / SHRINK_FULLNESS_FACTOR / 2) { + heap->timer_capacity = heap->timer_count * SHRINK_FULLNESS_FACTOR; + heap->timers = + gpr_realloc(heap->timers, heap->timer_capacity * sizeof(grpc_timer *)); } } -static void note_changed_priority(grpc_alarm_heap *heap, grpc_alarm *alarm) { - gpr_uint32 i = alarm->heap_index; +static void note_changed_priority(grpc_timer_heap *heap, grpc_timer *timer) { + gpr_uint32 i = timer->heap_index; gpr_uint32 parent = (gpr_uint32)(((int)i - 1) / 2); - if (gpr_time_cmp(heap->alarms[parent]->deadline, alarm->deadline) < 0) { - adjust_upwards(heap->alarms, i, alarm); + if (gpr_time_cmp(heap->timers[parent]->deadline, timer->deadline) < 0) { + adjust_upwards(heap->timers, i, timer); } else { - adjust_downwards(heap->alarms, i, heap->alarm_count, alarm); + adjust_downwards(heap->timers, i, heap->timer_count, timer); } } -void grpc_alarm_heap_init(grpc_alarm_heap *heap) { +void grpc_timer_heap_init(grpc_timer_heap *heap) { memset(heap, 0, sizeof(*heap)); } -void grpc_alarm_heap_destroy(grpc_alarm_heap *heap) { gpr_free(heap->alarms); } +void grpc_timer_heap_destroy(grpc_timer_heap *heap) { gpr_free(heap->timers); } -int grpc_alarm_heap_add(grpc_alarm_heap *heap, grpc_alarm *alarm) { - if (heap->alarm_count == heap->alarm_capacity) { - heap->alarm_capacity = - GPR_MAX(heap->alarm_capacity + 1, heap->alarm_capacity * 3 / 2); - heap->alarms = - gpr_realloc(heap->alarms, heap->alarm_capacity * sizeof(grpc_alarm *)); +int grpc_timer_heap_add(grpc_timer_heap *heap, grpc_timer *timer) { + if (heap->timer_count == heap->timer_capacity) { + heap->timer_capacity = + GPR_MAX(heap->timer_capacity + 1, heap->timer_capacity * 3 / 2); + heap->timers = + gpr_realloc(heap->timers, heap->timer_capacity * sizeof(grpc_timer *)); } - alarm->heap_index = heap->alarm_count; - adjust_upwards(heap->alarms, heap->alarm_count, alarm); - heap->alarm_count++; - return alarm->heap_index == 0; + timer->heap_index = heap->timer_count; + adjust_upwards(heap->timers, heap->timer_count, timer); + heap->timer_count++; + return timer->heap_index == 0; } -void grpc_alarm_heap_remove(grpc_alarm_heap *heap, grpc_alarm *alarm) { - gpr_uint32 i = alarm->heap_index; - if (i == heap->alarm_count - 1) { - heap->alarm_count--; +void grpc_timer_heap_remove(grpc_timer_heap *heap, grpc_timer *timer) { + gpr_uint32 i = timer->heap_index; + if (i == heap->timer_count - 1) { + heap->timer_count--; maybe_shrink(heap); return; } - heap->alarms[i] = heap->alarms[heap->alarm_count - 1]; - heap->alarms[i]->heap_index = i; - heap->alarm_count--; + heap->timers[i] = heap->timers[heap->timer_count - 1]; + heap->timers[i]->heap_index = i; + heap->timer_count--; maybe_shrink(heap); - note_changed_priority(heap, heap->alarms[i]); + note_changed_priority(heap, heap->timers[i]); } -int grpc_alarm_heap_is_empty(grpc_alarm_heap *heap) { - return heap->alarm_count == 0; +int grpc_timer_heap_is_empty(grpc_timer_heap *heap) { + return heap->timer_count == 0; } -grpc_alarm *grpc_alarm_heap_top(grpc_alarm_heap *heap) { - return heap->alarms[0]; +grpc_timer *grpc_timer_heap_top(grpc_timer_heap *heap) { + return heap->timers[0]; } -void grpc_alarm_heap_pop(grpc_alarm_heap *heap) { - grpc_alarm_heap_remove(heap, grpc_alarm_heap_top(heap)); +void grpc_timer_heap_pop(grpc_timer_heap *heap) { + grpc_timer_heap_remove(heap, grpc_timer_heap_top(heap)); } diff --git a/src/core/iomgr/alarm_heap.h b/src/core/iomgr/timer_heap.h similarity index 68% rename from src/core/iomgr/alarm_heap.h rename to src/core/iomgr/timer_heap.h index 91d6ee3ca22..cd5258f93e1 100644 --- a/src/core/iomgr/alarm_heap.h +++ b/src/core/iomgr/timer_heap.h @@ -31,27 +31,27 @@ * */ -#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H -#define GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H +#ifndef GRPC_INTERNAL_CORE_IOMGR_TIMER_HEAP_H +#define GRPC_INTERNAL_CORE_IOMGR_TIMER_HEAP_H -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" typedef struct { - grpc_alarm **alarms; - gpr_uint32 alarm_count; - gpr_uint32 alarm_capacity; -} grpc_alarm_heap; + grpc_timer **timers; + gpr_uint32 timer_count; + gpr_uint32 timer_capacity; +} grpc_timer_heap; -/* return 1 if the new alarm is the first alarm in the heap */ -int grpc_alarm_heap_add(grpc_alarm_heap *heap, grpc_alarm *alarm); +/* return 1 if the new timer is the first timer in the heap */ +int grpc_timer_heap_add(grpc_timer_heap *heap, grpc_timer *timer); -void grpc_alarm_heap_init(grpc_alarm_heap *heap); -void grpc_alarm_heap_destroy(grpc_alarm_heap *heap); +void grpc_timer_heap_init(grpc_timer_heap *heap); +void grpc_timer_heap_destroy(grpc_timer_heap *heap); -void grpc_alarm_heap_remove(grpc_alarm_heap *heap, grpc_alarm *alarm); -grpc_alarm *grpc_alarm_heap_top(grpc_alarm_heap *heap); -void grpc_alarm_heap_pop(grpc_alarm_heap *heap); +void grpc_timer_heap_remove(grpc_timer_heap *heap, grpc_timer *timer); +grpc_timer *grpc_timer_heap_top(grpc_timer_heap *heap); +void grpc_timer_heap_pop(grpc_timer_heap *heap); -int grpc_alarm_heap_is_empty(grpc_alarm_heap *heap); +int grpc_timer_heap_is_empty(grpc_timer_heap *heap); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TIMER_HEAP_H */ diff --git a/src/core/iomgr/alarm_internal.h b/src/core/iomgr/timer_internal.h similarity index 78% rename from src/core/iomgr/alarm_internal.h rename to src/core/iomgr/timer_internal.h index 31d840e6f9b..f180eca36e0 100644 --- a/src/core/iomgr/alarm_internal.h +++ b/src/core/iomgr/timer_internal.h @@ -31,33 +31,33 @@ * */ -#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H -#define GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H +#ifndef GRPC_INTERNAL_CORE_IOMGR_TIMER_INTERNAL_H +#define GRPC_INTERNAL_CORE_IOMGR_TIMER_INTERNAL_H #include "src/core/iomgr/exec_ctx.h" #include #include -/* iomgr internal api for dealing with alarms */ +/* iomgr internal api for dealing with timers */ -/* Check for alarms to be run, and run them. - Return non zero if alarm callbacks were executed. +/* Check for timers to be run, and run them. + Return non zero if timer callbacks were executed. Drops drop_mu if it is non-null before executing callbacks. - If next is non-null, TRY to update *next with the next running alarm - IF that alarm occurs before *next current value. + If next is non-null, TRY to update *next with the next running timer + IF that timer occurs before *next current value. *next is never guaranteed to be updated on any given execution; however, with high probability at least one thread in the system will see an update at any time slice. */ -int grpc_alarm_check(grpc_exec_ctx* exec_ctx, gpr_timespec now, +int grpc_timer_check(grpc_exec_ctx* exec_ctx, gpr_timespec now, gpr_timespec* next); -void grpc_alarm_list_init(gpr_timespec now); -void grpc_alarm_list_shutdown(grpc_exec_ctx* exec_ctx); +void grpc_timer_list_init(gpr_timespec now); +void grpc_timer_list_shutdown(grpc_exec_ctx* exec_ctx); -gpr_timespec grpc_alarm_list_next_timeout(void); +gpr_timespec grpc_timer_list_next_timeout(void); /* the following must be implemented by each iomgr implementation */ void grpc_kick_poller(void); -#endif /* GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H */ +#endif /* GRPC_INTERNAL_CORE_IOMGR_TIMER_INTERNAL_H */ diff --git a/src/core/surface/alarm.c b/src/core/surface/alarm.c new file mode 100644 index 00000000000..7c47dd56f82 --- /dev/null +++ b/src/core/surface/alarm.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "src/core/iomgr/timer.h" +#include "src/core/surface/completion_queue.h" +#include +#include + +struct grpc_alarm { + grpc_timer alarm; + grpc_cq_completion completion; + /** completion queue where events about this alarm will be posted */ + grpc_completion_queue *cq; + /** user supplied tag */ + void *tag; +}; + +static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg, + grpc_cq_completion *c) {} + +static void alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, int success) { + grpc_alarm *alarm = arg; + grpc_cq_end_op(exec_ctx, alarm->cq, alarm->tag, success, + do_nothing_end_completion, NULL, &alarm->completion); +} + +grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline, + void *tag) { + grpc_alarm *alarm = gpr_malloc(sizeof(grpc_alarm)); + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + + GRPC_CQ_INTERNAL_REF(cq, "alarm"); + alarm->cq = cq; + alarm->tag = tag; + + grpc_timer_init(&exec_ctx, &alarm->alarm, deadline, alarm_cb, alarm, + gpr_now(GPR_CLOCK_MONOTONIC)); + grpc_cq_begin_op(cq); + grpc_exec_ctx_finish(&exec_ctx); + return alarm; +} + +void grpc_alarm_cancel(grpc_alarm *alarm) { + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_timer_cancel(&exec_ctx, &alarm->alarm); + grpc_exec_ctx_finish(&exec_ctx); +} + +void grpc_alarm_destroy(grpc_alarm *alarm) { + grpc_alarm_cancel(alarm); + GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm"); + gpr_free(alarm); +} diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 0b917f15611..4aa3ac3cd30 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -42,7 +42,7 @@ #include #include "src/core/channel/channel_stack.h" -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/profiling/timers.h" #include "src/core/support/string.h" #include "src/core/surface/byte_buffer_queue.h" @@ -236,7 +236,7 @@ struct grpc_call { grpc_call_context_element context[GRPC_CONTEXT_COUNT]; /* Deadline alarm - if have_alarm is non-zero */ - grpc_alarm alarm; + grpc_timer alarm; /* Call refcount - to keep the call alive during asynchronous operations */ gpr_refcount internal_refcount; @@ -986,7 +986,7 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { GPR_ASSERT(call->read_state <= READ_STATE_STREAM_CLOSED); call->read_state = READ_STATE_STREAM_CLOSED; if (call->have_alarm) { - grpc_alarm_cancel(exec_ctx, &call->alarm); + grpc_timer_cancel(exec_ctx, &call->alarm); } /* propagate cancellation to any interested children */ child_call = call->first_child; @@ -1298,7 +1298,7 @@ void grpc_call_destroy(grpc_call *c) { GPR_ASSERT(!c->destroy_called); c->destroy_called = 1; if (c->have_alarm) { - grpc_alarm_cancel(&exec_ctx, &c->alarm); + grpc_timer_cancel(&exec_ctx, &c->alarm); } cancel = c->read_state != READ_STATE_STREAM_CLOSED; unlock(&exec_ctx, c); @@ -1417,7 +1417,7 @@ static void set_deadline_alarm(grpc_exec_ctx *exec_ctx, grpc_call *call, GRPC_CALL_INTERNAL_REF(call, "alarm"); call->have_alarm = 1; call->send_deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); - grpc_alarm_init(exec_ctx, &call->alarm, call->send_deadline, call_alarm, call, + grpc_timer_init(exec_ctx, &call->alarm, call->send_deadline, call_alarm, call, gpr_now(GPR_CLOCK_MONOTONIC)); } diff --git a/src/core/surface/channel_connectivity.c b/src/core/surface/channel_connectivity.c index 47cbab154f8..b992437d78e 100644 --- a/src/core/surface/channel_connectivity.c +++ b/src/core/surface/channel_connectivity.c @@ -37,7 +37,7 @@ #include #include "src/core/channel/client_channel.h" -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include "src/core/surface/completion_queue.h" grpc_connectivity_state grpc_channel_check_connectivity_state( @@ -74,7 +74,7 @@ typedef struct { int success; int removed; grpc_closure on_complete; - grpc_alarm alarm; + grpc_timer alarm; grpc_connectivity_state state; grpc_completion_queue *cq; grpc_cq_completion completion_storage; @@ -131,7 +131,7 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w, gpr_mu_lock(&w->mu); w->success = 1; gpr_mu_unlock(&w->mu); - grpc_alarm_cancel(exec_ctx, &w->alarm); + grpc_timer_cancel(exec_ctx, &w->alarm); } gpr_mu_lock(&w->mu); @@ -187,7 +187,7 @@ void grpc_channel_watch_connectivity_state( w->tag = tag; w->channel = channel; - grpc_alarm_init(&exec_ctx, &w->alarm, + grpc_timer_init(&exec_ctx, &w->alarm, gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), timeout_complete, w, gpr_now(GPR_CLOCK_MONOTONIC)); diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 31ec1b68dae..d73e5a7b46a 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -36,6 +36,7 @@ #include #include +#include "src/core/iomgr/timer.h" #include "src/core/iomgr/pollset.h" #include "src/core/support/string.h" #include "src/core/surface/call.h" @@ -71,6 +72,15 @@ struct grpc_completion_queue { grpc_closure pollset_destroy_done; }; +struct grpc_cq_alarm { + grpc_timer alarm; + grpc_cq_completion completion; + /** completion queue where events about this alarm will be posted */ + grpc_completion_queue *cq; + /** user supplied tag */ + void *tag; +}; + static void on_pollset_destroy_done(grpc_exec_ctx *exec_ctx, void *cc, int success); @@ -355,40 +365,3 @@ grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc) { void grpc_cq_mark_server_cq(grpc_completion_queue *cc) { cc->is_server_cq = 1; } int grpc_cq_is_server_cq(grpc_completion_queue *cc) { return cc->is_server_cq; } - -static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *c) {} - -static void cq_alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, int success) { - grpc_cq_alarm *cq_alarm = arg; - grpc_cq_end_op(exec_ctx, cq_alarm->cq, cq_alarm->tag, success, - do_nothing_end_completion, NULL, &cq_alarm->completion); -} - -grpc_cq_alarm *grpc_cq_alarm_create(grpc_completion_queue *cq, - gpr_timespec deadline, void *tag) { - grpc_cq_alarm *cq_alarm = gpr_malloc(sizeof(grpc_cq_alarm)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - - GRPC_CQ_INTERNAL_REF(cq, "cq_alarm"); - cq_alarm->cq = cq; - cq_alarm->tag = tag; - - grpc_alarm_init(&exec_ctx, &cq_alarm->alarm, deadline, cq_alarm_cb, cq_alarm, - gpr_now(GPR_CLOCK_MONOTONIC)); - grpc_cq_begin_op(cq); - grpc_exec_ctx_finish(&exec_ctx); - return cq_alarm; -} - -void grpc_cq_alarm_cancel(grpc_cq_alarm *cq_alarm) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_alarm_cancel(&exec_ctx, &cq_alarm->alarm); - grpc_exec_ctx_finish(&exec_ctx); -} - -void grpc_cq_alarm_destroy(grpc_cq_alarm *cq_alarm) { - grpc_cq_alarm_cancel(cq_alarm); - GRPC_CQ_INTERNAL_UNREF(cq_alarm->cq, "cq_alarm"); - gpr_free(cq_alarm); -} diff --git a/src/core/surface/completion_queue.h b/src/core/surface/completion_queue.h index 12a7e9a147a..5f8282e5429 100644 --- a/src/core/surface/completion_queue.h +++ b/src/core/surface/completion_queue.h @@ -36,7 +36,6 @@ /* Internal API for completion queues */ -#include "src/core/iomgr/alarm.h" #include "src/core/iomgr/pollset.h" #include @@ -52,16 +51,6 @@ typedef struct grpc_cq_completion { gpr_uintptr next; } grpc_cq_completion; -/** An alarm associated with a completion queue. */ -typedef struct grpc_cq_alarm { - grpc_alarm alarm; - grpc_cq_completion completion; - /** completion queue where events about this alarm will be posted */ - grpc_completion_queue *cq; - /** user supplied tag */ - void *tag; -} grpc_cq_alarm; - #ifdef GRPC_CQ_REF_COUNT_DEBUG void grpc_cq_internal_ref(grpc_completion_queue *cc, const char *reason, const char *file, int line); @@ -94,19 +83,4 @@ grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc); void grpc_cq_mark_server_cq(grpc_completion_queue *cc); int grpc_cq_is_server_cq(grpc_completion_queue *cc); -/** Create a completion queue alarm instance associated to \a cq. - * - * Once the alarm expires (at \a deadline) or it's cancelled (see ...), an event - * with tag \a tag will be added to \a cq. If the alarm expired, the event's - * success bit will be true, false otherwise (ie, upon cancellation). */ -grpc_cq_alarm *grpc_cq_alarm_create(grpc_completion_queue *cq, - gpr_timespec deadline, void *tag); - -/** Cancel a completion queue alarm. Calling this function ove an alarm that has - * already run has no effect. */ -void grpc_cq_alarm_cancel(grpc_cq_alarm *cq_alarm); - -/** Destroy the given completion queue alarm, cancelling it in the process. */ -void grpc_cq_alarm_destroy(grpc_cq_alarm *cq_alarm); - #endif /* GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H */ diff --git a/test/core/iomgr/alarm_heap_test.c b/test/core/iomgr/timer_heap_test.c similarity index 70% rename from test/core/iomgr/alarm_heap_test.c rename to test/core/iomgr/timer_heap_test.c index 13bf7e43f64..941f61c5c78 100644 --- a/test/core/iomgr/alarm_heap_test.c +++ b/test/core/iomgr/timer_heap_test.c @@ -31,7 +31,7 @@ * */ -#include "src/core/iomgr/alarm_heap.h" +#include "src/core/iomgr/timer_heap.h" #include #include @@ -48,8 +48,8 @@ static gpr_timespec random_deadline(void) { return ts; } -static grpc_alarm *create_test_elements(size_t num_elements) { - grpc_alarm *elems = gpr_malloc(num_elements * sizeof(grpc_alarm)); +static grpc_timer *create_test_elements(size_t num_elements) { + grpc_timer *elems = gpr_malloc(num_elements * sizeof(grpc_timer)); size_t i; for (i = 0; i < num_elements; i++) { elems[i].deadline = random_deadline(); @@ -63,17 +63,17 @@ static int cmp_elem(const void *a, const void *b) { return i - j; } -static size_t *all_top(grpc_alarm_heap *pq, size_t *n) { +static size_t *all_top(grpc_timer_heap *pq, size_t *n) { size_t *vec = NULL; size_t *need_to_check_children; size_t num_need_to_check_children = 0; *n = 0; - if (pq->alarm_count == 0) return vec; + if (pq->timer_count == 0) return vec; need_to_check_children = - gpr_malloc(pq->alarm_count * sizeof(*need_to_check_children)); + gpr_malloc(pq->timer_count * sizeof(*need_to_check_children)); need_to_check_children[num_need_to_check_children++] = 0; - vec = gpr_malloc(pq->alarm_count * sizeof(*vec)); + vec = gpr_malloc(pq->timer_count * sizeof(*vec)); while (num_need_to_check_children > 0) { size_t ind = need_to_check_children[0]; size_t leftchild, rightchild; @@ -82,15 +82,15 @@ static size_t *all_top(grpc_alarm_heap *pq, size_t *n) { num_need_to_check_children * sizeof(*need_to_check_children)); vec[(*n)++] = ind; leftchild = 1u + 2u * ind; - if (leftchild < pq->alarm_count) { - if (gpr_time_cmp(pq->alarms[leftchild]->deadline, - pq->alarms[ind]->deadline) >= 0) { + if (leftchild < pq->timer_count) { + if (gpr_time_cmp(pq->timers[leftchild]->deadline, + pq->timers[ind]->deadline) >= 0) { need_to_check_children[num_need_to_check_children++] = leftchild; } rightchild = leftchild + 1; - if (rightchild < pq->alarm_count && - gpr_time_cmp(pq->alarms[rightchild]->deadline, - pq->alarms[ind]->deadline) >= 0) { + if (rightchild < pq->timer_count && + gpr_time_cmp(pq->timers[rightchild]->deadline, + pq->timers[ind]->deadline) >= 0) { need_to_check_children[num_need_to_check_children++] = rightchild; } } @@ -101,7 +101,7 @@ static size_t *all_top(grpc_alarm_heap *pq, size_t *n) { return vec; } -static void check_pq_top(grpc_alarm *elements, grpc_alarm_heap *pq, +static void check_pq_top(grpc_timer *elements, grpc_timer_heap *pq, gpr_uint8 *inpq, size_t num_elements) { gpr_timespec max_deadline = gpr_inf_past(GPR_CLOCK_REALTIME); size_t *max_deadline_indices = @@ -130,45 +130,45 @@ static void check_pq_top(grpc_alarm *elements, grpc_alarm_heap *pq, gpr_free(top_elements); } -static int contains(grpc_alarm_heap *pq, grpc_alarm *el) { +static int contains(grpc_timer_heap *pq, grpc_timer *el) { size_t i; - for (i = 0; i < pq->alarm_count; i++) { - if (pq->alarms[i] == el) return 1; + for (i = 0; i < pq->timer_count; i++) { + if (pq->timers[i] == el) return 1; } return 0; } -static void check_valid(grpc_alarm_heap *pq) { +static void check_valid(grpc_timer_heap *pq) { size_t i; - for (i = 0; i < pq->alarm_count; ++i) { + for (i = 0; i < pq->timer_count; ++i) { size_t left_child = 1u + 2u * i; size_t right_child = left_child + 1u; - if (left_child < pq->alarm_count) { - GPR_ASSERT(gpr_time_cmp(pq->alarms[i]->deadline, - pq->alarms[left_child]->deadline) >= 0); + if (left_child < pq->timer_count) { + GPR_ASSERT(gpr_time_cmp(pq->timers[i]->deadline, + pq->timers[left_child]->deadline) >= 0); } - if (right_child < pq->alarm_count) { - GPR_ASSERT(gpr_time_cmp(pq->alarms[i]->deadline, - pq->alarms[right_child]->deadline) >= 0); + if (right_child < pq->timer_count) { + GPR_ASSERT(gpr_time_cmp(pq->timers[i]->deadline, + pq->timers[right_child]->deadline) >= 0); } } } static void test1(void) { - grpc_alarm_heap pq; + grpc_timer_heap pq; const size_t num_test_elements = 200; const size_t num_test_operations = 10000; size_t i; - grpc_alarm *test_elements = create_test_elements(num_test_elements); + grpc_timer *test_elements = create_test_elements(num_test_elements); gpr_uint8 *inpq = gpr_malloc(num_test_elements); - grpc_alarm_heap_init(&pq); + grpc_timer_heap_init(&pq); memset(inpq, 0, num_test_elements); - GPR_ASSERT(grpc_alarm_heap_is_empty(&pq)); + GPR_ASSERT(grpc_timer_heap_is_empty(&pq)); check_valid(&pq); for (i = 0; i < num_test_elements; ++i) { GPR_ASSERT(!contains(&pq, &test_elements[i])); - grpc_alarm_heap_add(&pq, &test_elements[i]); + grpc_timer_heap_add(&pq, &test_elements[i]); check_valid(&pq); GPR_ASSERT(contains(&pq, &test_elements[i])); inpq[i] = 1; @@ -180,24 +180,24 @@ static void test1(void) { GPR_ASSERT(contains(&pq, &test_elements[i])); } - GPR_ASSERT(pq.alarm_count == num_test_elements); + GPR_ASSERT(pq.timer_count == num_test_elements); check_pq_top(test_elements, &pq, inpq, num_test_elements); for (i = 0; i < num_test_operations; ++i) { size_t elem_num = (size_t)rand() % num_test_elements; - grpc_alarm *el = &test_elements[elem_num]; + grpc_timer *el = &test_elements[elem_num]; if (!inpq[elem_num]) { /* not in pq */ GPR_ASSERT(!contains(&pq, el)); el->deadline = random_deadline(); - grpc_alarm_heap_add(&pq, el); + grpc_timer_heap_add(&pq, el); GPR_ASSERT(contains(&pq, el)); inpq[elem_num] = 1; check_pq_top(test_elements, &pq, inpq, num_test_elements); check_valid(&pq); } else { GPR_ASSERT(contains(&pq, el)); - grpc_alarm_heap_remove(&pq, el); + grpc_timer_heap_remove(&pq, el); GPR_ASSERT(!contains(&pq, el)); inpq[elem_num] = 0; check_pq_top(test_elements, &pq, inpq, num_test_elements); @@ -205,66 +205,66 @@ static void test1(void) { } } - grpc_alarm_heap_destroy(&pq); + grpc_timer_heap_destroy(&pq); gpr_free(test_elements); gpr_free(inpq); } static void shrink_test(void) { - grpc_alarm_heap pq; + grpc_timer_heap pq; size_t i; size_t expected_size; /* A large random number to allow for multiple shrinkages, at least 512. */ const size_t num_elements = (size_t)rand() % 2000 + 512; - grpc_alarm_heap_init(&pq); + grpc_timer_heap_init(&pq); /* Create a priority queue with many elements. Make sure the Size() is correct. */ for (i = 0; i < num_elements; ++i) { - GPR_ASSERT(i == pq.alarm_count); - grpc_alarm_heap_add(&pq, create_test_elements(1)); + GPR_ASSERT(i == pq.timer_count); + grpc_timer_heap_add(&pq, create_test_elements(1)); } - GPR_ASSERT(num_elements == pq.alarm_count); + GPR_ASSERT(num_elements == pq.timer_count); /* Remove elements until the Size is 1/4 the original size. */ - while (pq.alarm_count > num_elements / 4) { - grpc_alarm *const te = pq.alarms[pq.alarm_count - 1]; - grpc_alarm_heap_remove(&pq, te); + while (pq.timer_count > num_elements / 4) { + grpc_timer *const te = pq.timers[pq.timer_count - 1]; + grpc_timer_heap_remove(&pq, te); gpr_free(te); } - GPR_ASSERT(num_elements / 4 == pq.alarm_count); + GPR_ASSERT(num_elements / 4 == pq.timer_count); /* Expect that Capacity is in the right range: Size * 2 <= Capacity <= Size * 4 */ - GPR_ASSERT(pq.alarm_count * 2 <= pq.alarm_capacity); - GPR_ASSERT(pq.alarm_capacity <= pq.alarm_count * 4); + GPR_ASSERT(pq.timer_count * 2 <= pq.timer_capacity); + GPR_ASSERT(pq.timer_capacity <= pq.timer_count * 4); check_valid(&pq); /* Remove the rest of the elements. Check that the Capacity is not more than 4 times the Size and not less than 2 times, but never goes below 16. */ - expected_size = pq.alarm_count; - while (pq.alarm_count > 0) { - const size_t which = (size_t)rand() % pq.alarm_count; - grpc_alarm *te = pq.alarms[which]; - grpc_alarm_heap_remove(&pq, te); + expected_size = pq.timer_count; + while (pq.timer_count > 0) { + const size_t which = (size_t)rand() % pq.timer_count; + grpc_timer *te = pq.timers[which]; + grpc_timer_heap_remove(&pq, te); gpr_free(te); expected_size--; - GPR_ASSERT(expected_size == pq.alarm_count); - GPR_ASSERT(pq.alarm_count * 2 <= pq.alarm_capacity); - if (pq.alarm_count >= 8) { - GPR_ASSERT(pq.alarm_capacity <= pq.alarm_count * 4); + GPR_ASSERT(expected_size == pq.timer_count); + GPR_ASSERT(pq.timer_count * 2 <= pq.timer_capacity); + if (pq.timer_count >= 8) { + GPR_ASSERT(pq.timer_capacity <= pq.timer_count * 4); } else { - GPR_ASSERT(16 <= pq.alarm_capacity); + GPR_ASSERT(16 <= pq.timer_capacity); } check_valid(&pq); } - GPR_ASSERT(0 == pq.alarm_count); - GPR_ASSERT(pq.alarm_capacity >= 16 && pq.alarm_capacity < 32); + GPR_ASSERT(0 == pq.timer_count); + GPR_ASSERT(pq.timer_capacity >= 16 && pq.timer_capacity < 32); - grpc_alarm_heap_destroy(&pq); + grpc_timer_heap_destroy(&pq); } int main(int argc, char **argv) { diff --git a/test/core/iomgr/alarm_list_test.c b/test/core/iomgr/timer_list_test.c similarity index 78% rename from test/core/iomgr/alarm_list_test.c rename to test/core/iomgr/timer_list_test.c index 6656a8fa3b0..5a2d5b5a176 100644 --- a/test/core/iomgr/alarm_list_test.c +++ b/test/core/iomgr/timer_list_test.c @@ -31,11 +31,11 @@ * */ -#include "src/core/iomgr/alarm.h" +#include "src/core/iomgr/timer.h" #include -#include "src/core/iomgr/alarm_internal.h" +#include "src/core/iomgr/timer_internal.h" #include #include "test/core/util/test_config.h" @@ -50,29 +50,29 @@ static void cb(grpc_exec_ctx *exec_ctx, void *arg, int success) { static void add_test(void) { gpr_timespec start = gpr_now(GPR_CLOCK_REALTIME); int i; - grpc_alarm alarms[20]; + grpc_timer timers[20]; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_alarm_list_init(start); + grpc_timer_list_init(start); memset(cb_called, 0, sizeof(cb_called)); - /* 10 ms alarms. will expire in the current epoch */ + /* 10 ms timers. will expire in the current epoch */ for (i = 0; i < 10; i++) { - grpc_alarm_init(&exec_ctx, &alarms[i], + grpc_timer_init(&exec_ctx, &timers[i], gpr_time_add(start, gpr_time_from_millis(10, GPR_TIMESPAN)), cb, (void *)(gpr_intptr)i, start); } - /* 1010 ms alarms. will expire in the next epoch */ + /* 1010 ms timers. will expire in the next epoch */ for (i = 10; i < 20; i++) { - grpc_alarm_init( - &exec_ctx, &alarms[i], + grpc_timer_init( + &exec_ctx, &timers[i], gpr_time_add(start, gpr_time_from_millis(1010, GPR_TIMESPAN)), cb, (void *)(gpr_intptr)i, start); } - /* collect alarms. Only the first batch should be ready. */ - GPR_ASSERT(10 == grpc_alarm_check(&exec_ctx, + /* collect timers. Only the first batch should be ready. */ + GPR_ASSERT(10 == grpc_timer_check(&exec_ctx, gpr_time_add(start, gpr_time_from_millis( 500, GPR_TIMESPAN)), NULL)); @@ -82,7 +82,7 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - GPR_ASSERT(0 == grpc_alarm_check(&exec_ctx, + GPR_ASSERT(0 == grpc_timer_check(&exec_ctx, gpr_time_add(start, gpr_time_from_millis( 600, GPR_TIMESPAN)), NULL)); @@ -92,8 +92,8 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - /* collect the rest of the alarms */ - GPR_ASSERT(10 == grpc_alarm_check( + /* collect the rest of the timers */ + GPR_ASSERT(10 == grpc_timer_check( &exec_ctx, gpr_time_add(start, gpr_time_from_millis( 1500, GPR_TIMESPAN)), NULL)); @@ -103,7 +103,7 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - GPR_ASSERT(0 == grpc_alarm_check(&exec_ctx, + GPR_ASSERT(0 == grpc_timer_check(&exec_ctx, gpr_time_add(start, gpr_time_from_millis( 1600, GPR_TIMESPAN)), NULL)); @@ -112,7 +112,7 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - grpc_alarm_list_shutdown(&exec_ctx); + grpc_timer_list_shutdown(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx); } @@ -122,34 +122,34 @@ static gpr_timespec tfm(int m) { return t; } -/* Cleaning up a list with pending alarms. */ +/* Cleaning up a list with pending timers. */ void destruction_test(void) { - grpc_alarm alarms[5]; + grpc_timer timers[5]; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_alarm_list_init(gpr_time_0(GPR_CLOCK_REALTIME)); + grpc_timer_list_init(gpr_time_0(GPR_CLOCK_REALTIME)); memset(cb_called, 0, sizeof(cb_called)); - grpc_alarm_init(&exec_ctx, &alarms[0], tfm(100), cb, (void *)(gpr_intptr)0, + grpc_timer_init(&exec_ctx, &timers[0], tfm(100), cb, (void *)(gpr_intptr)0, gpr_time_0(GPR_CLOCK_REALTIME)); - grpc_alarm_init(&exec_ctx, &alarms[1], tfm(3), cb, (void *)(gpr_intptr)1, + grpc_timer_init(&exec_ctx, &timers[1], tfm(3), cb, (void *)(gpr_intptr)1, gpr_time_0(GPR_CLOCK_REALTIME)); - grpc_alarm_init(&exec_ctx, &alarms[2], tfm(100), cb, (void *)(gpr_intptr)2, + grpc_timer_init(&exec_ctx, &timers[2], tfm(100), cb, (void *)(gpr_intptr)2, gpr_time_0(GPR_CLOCK_REALTIME)); - grpc_alarm_init(&exec_ctx, &alarms[3], tfm(3), cb, (void *)(gpr_intptr)3, + grpc_timer_init(&exec_ctx, &timers[3], tfm(3), cb, (void *)(gpr_intptr)3, gpr_time_0(GPR_CLOCK_REALTIME)); - grpc_alarm_init(&exec_ctx, &alarms[4], tfm(1), cb, (void *)(gpr_intptr)4, + grpc_timer_init(&exec_ctx, &timers[4], tfm(1), cb, (void *)(gpr_intptr)4, gpr_time_0(GPR_CLOCK_REALTIME)); - GPR_ASSERT(1 == grpc_alarm_check(&exec_ctx, tfm(2), NULL)); + GPR_ASSERT(1 == grpc_timer_check(&exec_ctx, tfm(2), NULL)); grpc_exec_ctx_finish(&exec_ctx); GPR_ASSERT(1 == cb_called[4][1]); - grpc_alarm_cancel(&exec_ctx, &alarms[0]); - grpc_alarm_cancel(&exec_ctx, &alarms[3]); + grpc_timer_cancel(&exec_ctx, &timers[0]); + grpc_timer_cancel(&exec_ctx, &timers[3]); grpc_exec_ctx_finish(&exec_ctx); GPR_ASSERT(1 == cb_called[0][0]); GPR_ASSERT(1 == cb_called[3][0]); - grpc_alarm_list_shutdown(&exec_ctx); + grpc_timer_list_shutdown(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx); GPR_ASSERT(1 == cb_called[1][0]); GPR_ASSERT(1 == cb_called[2][0]); diff --git a/test/core/surface/alarm_test.c b/test/core/surface/alarm_test.c new file mode 100644 index 00000000000..52fe4ea0843 --- /dev/null +++ b/test/core/surface/alarm_test.c @@ -0,0 +1,100 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include "test/core/util/test_config.h" + +#define LOG_TEST(x) gpr_log(GPR_INFO, "%s", x) + +static void *create_test_tag(void) { + static gpr_intptr i = 0; + return (void *)(++i); +} + +/* helper for tests to shutdown correctly and tersely */ +static void shutdown_and_destroy(grpc_completion_queue *cc) { + grpc_event ev; + grpc_completion_queue_shutdown(cc); + ev = grpc_completion_queue_next(cc, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); + GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN); + grpc_completion_queue_destroy(cc); +} + +static void test_alarm(void) { + grpc_completion_queue *cc; + + LOG_TEST("test_alarm"); + cc = grpc_completion_queue_create(NULL); + { + /* regular expiry */ + grpc_event ev; + void *tag = create_test_tag(); + grpc_alarm *alarm = + grpc_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), tag); + + ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), + NULL); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + GPR_ASSERT(ev.tag == tag); + GPR_ASSERT(ev.success); + grpc_alarm_destroy(alarm); + } + { + /* cancellation */ + grpc_event ev; + void *tag = create_test_tag(); + grpc_alarm *alarm = + grpc_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), tag); + + grpc_alarm_cancel(alarm); + ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), + NULL); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + GPR_ASSERT(ev.tag == tag); + GPR_ASSERT(ev.success == 0); + grpc_alarm_destroy(alarm); + } + shutdown_and_destroy(cc); +} + +int main(int argc, char **argv) { + grpc_test_init(argc, argv); + grpc_init(); + test_alarm(); + grpc_shutdown(); + return 0; +} diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c index 16bccc36091..e3fc7897884 100644 --- a/test/core/surface/completion_queue_test.c +++ b/test/core/surface/completion_queue_test.c @@ -102,43 +102,6 @@ static void test_cq_end_op(void) { grpc_exec_ctx_finish(&exec_ctx); } -static void test_cq_alarm(void) { - grpc_completion_queue *cc; - - LOG_TEST("test_cq_alarm"); - cc = grpc_completion_queue_create(NULL); - { - /* regular expiry */ - grpc_event ev; - void *tag = create_test_tag(); - grpc_cq_alarm *cq_alarm = - grpc_cq_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), tag); - - ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), - NULL); - GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); - GPR_ASSERT(ev.tag == tag); - GPR_ASSERT(ev.success); - grpc_cq_alarm_destroy(cq_alarm); - } - { - /* cancellation */ - grpc_event ev; - void *tag = create_test_tag(); - grpc_cq_alarm *cq_alarm = - grpc_cq_alarm_create(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), tag); - - grpc_cq_alarm_cancel(cq_alarm); - ev = grpc_completion_queue_next(cc, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), - NULL); - GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); - GPR_ASSERT(ev.tag == tag); - GPR_ASSERT(ev.success == 0); - grpc_cq_alarm_destroy(cq_alarm); - } - shutdown_and_destroy(cc); -} - static void test_shutdown_then_next_polling(void) { grpc_completion_queue *cc; grpc_event event; @@ -380,7 +343,6 @@ int main(int argc, char **argv) { test_shutdown_then_next_with_timeout(); test_cq_end_op(); test_pluck(); - test_cq_alarm(); test_threading(1, 1); test_threading(1, 10); test_threading(10, 1); diff --git a/tools/buildgen/generate_projects.py b/tools/buildgen/generate_projects.py index c3e2b120516..5738dc3f7f8 100755 --- a/tools/buildgen/generate_projects.py +++ b/tools/buildgen/generate_projects.py @@ -55,7 +55,7 @@ for root, dirs, files in os.walk('templates'): out = out_dir + '/' + os.path.splitext(f)[0] if not os.path.exists(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: cmd.append('-p') cmd.append(plugin) @@ -73,7 +73,7 @@ for root, dirs, files in os.walk('templates'): cmd.append(root + '/' + f) jobs.append(jobset.JobSpec(cmd, shortname=out)) -jobset.run(jobs) +jobset.run(jobs, maxjobs=4) if test is not None: for s, g in test.iteritems(): diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index a7a3da4d200..acc3ef2a4fe 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -812,9 +812,6 @@ src/core/debug/trace.h \ src/core/httpcli/format_request.h \ src/core/httpcli/httpcli.h \ src/core/httpcli/parser.h \ -src/core/iomgr/alarm.h \ -src/core/iomgr/alarm_heap.h \ -src/core/iomgr/alarm_internal.h \ src/core/iomgr/closure.h \ src/core/iomgr/endpoint.h \ src/core/iomgr/endpoint_pair.h \ @@ -842,6 +839,9 @@ src/core/iomgr/tcp_posix.h \ src/core/iomgr/tcp_server.h \ src/core/iomgr/tcp_windows.h \ src/core/iomgr/time_averaged_stats.h \ +src/core/iomgr/timer.h \ +src/core/iomgr/timer_heap.h \ +src/core/iomgr/timer_internal.h \ src/core/iomgr/udp_server.h \ src/core/iomgr/wakeup_fd_pipe.h \ src/core/iomgr/wakeup_fd_posix.h \ @@ -946,8 +946,6 @@ src/core/debug/trace.c \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ -src/core/iomgr/alarm.c \ -src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -978,6 +976,8 @@ src/core/iomgr/tcp_server_posix.c \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ +src/core/iomgr/timer.c \ +src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ @@ -991,6 +991,7 @@ src/core/json/json_string.c \ src/core/json/json_writer.c \ src/core/profiling/basic_timers.c \ src/core/profiling/stap_timers.c \ +src/core/surface/alarm.c \ src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_reader.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 1e5dd11fcd0..ad5fa251b81 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1,34 +1,6 @@ [ - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "language": "c", - "name": "alarm_heap_test", - "src": [ - "test/core/iomgr/alarm_heap_test.c" - ] - }, - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "language": "c", - "name": "alarm_list_test", - "src": [ - "test/core/iomgr/alarm_list_test.c" - ] - }, { "deps": [ "gpr", @@ -426,6 +398,20 @@ "test/core/support/useful_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "grpc_alarm_test", + "src": [ + "test/core/surface/alarm_test.c" + ] + }, { "deps": [ "gpr", @@ -968,6 +954,34 @@ "test/core/transport/chttp2/timeout_encoding_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "timer_heap_test", + "src": [ + "test/core/iomgr/timer_heap_test.c" + ] + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "timer_list_test", + "src": [ + "test/core/iomgr/timer_list_test.c" + ] + }, { "deps": [ "gpr", @@ -12310,9 +12324,6 @@ "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -12340,6 +12351,9 @@ "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -12484,11 +12498,6 @@ "src/core/httpcli/httpcli_security_connector.c", "src/core/httpcli/parser.c", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.c", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.c", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.c", @@ -12546,6 +12555,11 @@ "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.c", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.c", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.c", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_eventfd.c", @@ -12596,6 +12610,7 @@ "src/core/security/server_secure_chttp2.c", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", + "src/core/surface/alarm.c", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.h", @@ -12813,9 +12828,6 @@ "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -12843,6 +12855,9 @@ "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -12972,11 +12987,6 @@ "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.c", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.c", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.c", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.c", @@ -13034,6 +13044,11 @@ "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.c", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.c", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.c", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_eventfd.c", @@ -13060,6 +13075,7 @@ "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", + "src/core/surface/alarm.c", "src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.h", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 7989f5c100f..0396cf4e2f5 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1,42 +1,6 @@ [ - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c", - "name": "alarm_heap_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c", - "name": "alarm_list_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, { "ci_platforms": [ "linux", @@ -513,6 +477,24 @@ "windows" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "grpc_alarm_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", @@ -1097,6 +1079,42 @@ "windows" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "timer_heap_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "timer_list_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln index 24b51d460d6..c0d8f632eef 100644 --- a/vsprojects/buildtests_c.sln +++ b/vsprojects/buildtests_c.sln @@ -575,28 +575,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bad_client_test", "vcxproj\ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alarm_heap_test", "vcxproj\test\alarm_heap_test\alarm_heap_test.vcxproj", "{B1746F03-DFBD-83E6-9886-2BB0F9D70B57}" - ProjectSection(myProperties) = preProject - lib = "False" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alarm_list_test", "vcxproj\test\alarm_list_test\alarm_list_test.vcxproj", "{E6F27D86-476F-CB60-AC56-ED3A210C0E96}" - ProjectSection(myProperties) = preProject - lib = "False" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alpn_test", "vcxproj\test\alpn_test\alpn_test.vcxproj", "{5BAAE7EA-A972-DD80-F190-29B9E3110BB3}" ProjectSection(myProperties) = preProject lib = "False" @@ -845,6 +823,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_useful_test", "vcxproj\ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_alarm_test", "vcxproj\test\grpc_alarm_test\grpc_alarm_test.vcxproj", "{45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}" + ProjectSection(myProperties) = preProject + lib = "False" + EndProjectSection + ProjectSection(ProjectDependencies) = postProject + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + EndProjectSection +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_auth_context_test", "vcxproj\test\grpc_auth_context_test\grpc_auth_context_test.vcxproj", "{C65A4336-92D6-D6A0-EB86-E3AA425222D0}" ProjectSection(myProperties) = preProject lib = "False" @@ -1204,6 +1193,28 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timeout_encoding_test", "vc {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer_heap_test", "vcxproj\test\timer_heap_test\timer_heap_test.vcxproj", "{A2110C60-E75A-F76E-205E-1836F86C4D53}" + ProjectSection(myProperties) = preProject + lib = "False" + EndProjectSection + ProjectSection(ProjectDependencies) = postProject + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer_list_test", "vcxproj\test\timer_list_test\timer_list_test.vcxproj", "{C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}" + ProjectSection(myProperties) = preProject + lib = "False" + EndProjectSection + ProjectSection(ProjectDependencies) = postProject + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + EndProjectSection +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timers_test", "vcxproj\test\timers_test\timers_test.vcxproj", "{FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}" ProjectSection(myProperties) = preProject lib = "False" @@ -8765,38 +8776,6 @@ Global {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|Win32.Build.0 = Release|Win32 {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|x64.ActiveCfg = Release|x64 {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|x64.Build.0 = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|Win32.ActiveCfg = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|x64.ActiveCfg = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|Win32.ActiveCfg = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|x64.ActiveCfg = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|Win32.Build.0 = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|x64.Build.0 = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|Win32.Build.0 = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|x64.Build.0 = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|Win32.Build.0 = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|x64.ActiveCfg = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|x64.Build.0 = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|Win32.ActiveCfg = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|Win32.Build.0 = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|x64.ActiveCfg = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|x64.Build.0 = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|Win32.ActiveCfg = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|x64.ActiveCfg = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|Win32.ActiveCfg = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|x64.ActiveCfg = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|Win32.Build.0 = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|x64.Build.0 = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|Win32.Build.0 = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|x64.Build.0 = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|Win32.Build.0 = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|x64.ActiveCfg = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|x64.Build.0 = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|Win32.ActiveCfg = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|Win32.Build.0 = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|x64.ActiveCfg = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|x64.Build.0 = Release|x64 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Debug|Win32.ActiveCfg = Debug|Win32 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Debug|x64.ActiveCfg = Debug|x64 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Release|Win32.ActiveCfg = Release|Win32 @@ -9213,6 +9192,22 @@ Global {40B790A8-BB01-9F12-5309-C0BEA97C75BC}.Release-DLL|Win32.Build.0 = Release|Win32 {40B790A8-BB01-9F12-5309-C0BEA97C75BC}.Release-DLL|x64.ActiveCfg = Release|x64 {40B790A8-BB01-9F12-5309-C0BEA97C75BC}.Release-DLL|x64.Build.0 = Release|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug|Win32.ActiveCfg = Debug|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug|x64.ActiveCfg = Debug|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release|Win32.ActiveCfg = Release|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release|x64.ActiveCfg = Release|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug|Win32.Build.0 = Debug|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug|x64.Build.0 = Debug|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release|Win32.Build.0 = Release|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release|x64.Build.0 = Release|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug-DLL|Win32.Build.0 = Debug|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug-DLL|x64.ActiveCfg = Debug|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Debug-DLL|x64.Build.0 = Debug|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release-DLL|Win32.ActiveCfg = Release|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release-DLL|Win32.Build.0 = Release|Win32 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release-DLL|x64.ActiveCfg = Release|x64 + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5}.Release-DLL|x64.Build.0 = Release|x64 {C65A4336-92D6-D6A0-EB86-E3AA425222D0}.Debug|Win32.ActiveCfg = Debug|Win32 {C65A4336-92D6-D6A0-EB86-E3AA425222D0}.Debug|x64.ActiveCfg = Debug|x64 {C65A4336-92D6-D6A0-EB86-E3AA425222D0}.Release|Win32.ActiveCfg = Release|Win32 @@ -9741,6 +9736,38 @@ Global {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|Win32.Build.0 = Release|Win32 {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|x64.ActiveCfg = Release|x64 {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|x64.Build.0 = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|x64.ActiveCfg = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|Win32.ActiveCfg = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|x64.ActiveCfg = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|Win32.Build.0 = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|x64.Build.0 = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|Win32.Build.0 = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|x64.Build.0 = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|Win32.Build.0 = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|x64.ActiveCfg = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|x64.Build.0 = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|Win32.ActiveCfg = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|Win32.Build.0 = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|x64.ActiveCfg = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|x64.Build.0 = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|Win32.ActiveCfg = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|x64.ActiveCfg = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|Win32.ActiveCfg = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|x64.ActiveCfg = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|Win32.Build.0 = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|x64.Build.0 = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|Win32.Build.0 = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|x64.Build.0 = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|Win32.Build.0 = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|x64.ActiveCfg = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|x64.Build.0 = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|Win32.ActiveCfg = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|Win32.Build.0 = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|x64.ActiveCfg = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|x64.Build.0 = Release|x64 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Debug|Win32.ActiveCfg = Debug|Win32 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Debug|x64.ActiveCfg = Debug|x64 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj index e7770af3c24..58e6c3acd38 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj @@ -298,9 +298,6 @@ - - - @@ -328,6 +325,9 @@ + + + @@ -488,10 +488,6 @@ - - - - @@ -552,6 +548,10 @@ + + + + @@ -578,6 +578,8 @@ + + diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters index a8f82370d91..dfeb84991a6 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters @@ -163,12 +163,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -259,6 +253,12 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr @@ -298,6 +298,9 @@ src\core\profiling + + src\core\surface + src\core\surface @@ -605,15 +608,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -695,6 +689,15 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj index 82ec8a75480..0f92142cf6a 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj @@ -277,9 +277,6 @@ - - - @@ -307,6 +304,9 @@ + + + @@ -427,10 +427,6 @@ - - - - @@ -491,6 +487,10 @@ + + + + @@ -517,6 +517,8 @@ + + diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters index 21355d67f26..3dc814fdfce 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -103,12 +103,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -199,6 +193,12 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr @@ -238,6 +238,9 @@ src\core\profiling + + src\core\surface + src\core\surface @@ -503,15 +506,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -593,6 +587,15 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr diff --git a/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj b/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj new file mode 100644 index 00000000000..3be433bf9d1 --- /dev/null +++ b/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj @@ -0,0 +1,184 @@ + + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {45AB14B7-333D-86D3-C67E-EA4DD5BFF7E5} + + + + v100 + + + v110 + + + v120 + + + Application + true + Unicode + + + Application + false + true + Unicode + + + + + + + + + + + + + + grpc_alarm_test + static + Debug + Debug + + + grpc_alarm_test + static + Debug + Debug + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + true + MultiThreadedDebug + true + None + + + Console + true + false + + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreadedDebug + true + None + + + Console + true + false + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + true + MultiThreaded + true + None + + + Console + true + false + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + None + + + Console + true + false + true + true + + + + + + + + + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + + + {29D16885-7228-4C31-81ED-5F9187C7F2A9} + + + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + + + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + + + + + + + + + + + + + + + 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}. + + + + + + + + + diff --git a/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj.filters b/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj.filters new file mode 100644 index 00000000000..05f5d8480f1 --- /dev/null +++ b/vsprojects/vcxproj/test/grpc_alarm_test/grpc_alarm_test.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + test\core\surface + + + + + + {eb4e6ce0-1386-4097-8770-b4f76f463e12} + + + {8d511d82-4aa4-c0e5-7ed6-f7a1dc694758} + + + {459fb84a-7d42-98e7-3113-a0ba225d560e} + + + + diff --git a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj similarity index 98% rename from vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj rename to vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj index cce21d4c719..8b84a528a01 100644 --- a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj +++ b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj @@ -20,7 +20,7 @@ - {E6F27D86-476F-CB60-AC56-ED3A210C0E96} + {A2110C60-E75A-F76E-205E-1836F86C4D53} @@ -55,13 +55,13 @@ - alarm_list_test + timer_heap_test static Debug Debug - alarm_list_test + timer_heap_test static Debug Debug @@ -143,7 +143,7 @@ - + diff --git a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters similarity index 64% rename from vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters rename to vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters index 74604fa7443..6a22addffa3 100644 --- a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters +++ b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters @@ -1,20 +1,20 @@ - + test\core\iomgr - {39c80086-e80b-b26f-6db8-7057b2bd93b3} + {c7789d63-cb31-a5ba-a830-4a6223e5561c} - {c551e414-1de0-a7c1-a69b-3ba69c55e5d4} + {320a9cb8-0041-acb0-79d5-6cff8f1fdeba} - {1330dfd2-f26b-7973-17c9-97c8809e9b74} + {df867a7c-861e-6482-a5b2-35a8ca345a6a} diff --git a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj similarity index 98% rename from vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj rename to vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj index f3c0cfd3c2c..4f00b62803a 100644 --- a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj +++ b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj @@ -20,7 +20,7 @@ - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57} + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB} @@ -55,13 +55,13 @@ - alarm_heap_test + timer_list_test static Debug Debug - alarm_heap_test + timer_list_test static Debug Debug @@ -143,7 +143,7 @@ - + diff --git a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters similarity index 64% rename from vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters rename to vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters index cc4cbf7c838..8973e5a9bd5 100644 --- a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters +++ b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters @@ -1,20 +1,20 @@ - + test\core\iomgr - {5599c85d-915e-7ef2-1b2c-061b82987e1d} + {ce536631-1d52-1c3c-8eed-efe2f4bae6ed} - {46744e86-73cb-67b0-cddb-72655b2ded40} + {b877a050-4172-3910-dede-77628e0ef150} - {26291b48-8dd4-079f-bbfa-a07190367bd7} + {087dd179-d26d-8e56-707b-6059afbfd70a} From d3b5b7f3a5eca431a304c18a449b228c7756717b Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 6 Oct 2015 17:02:03 -0700 Subject: [PATCH 004/111] Used the proper GRPC_TRACE value in run_tests.py --- tools/run_tests/run_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index e938520403d..adb6ce9ace7 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -607,7 +607,7 @@ run_configs = set(_CONFIGS[cfg] build_configs = set(cfg.build_config for cfg in run_configs) if args.travis: - _FORCE_ENVIRON_FOR_WRAPPERS = {'GRPC_TRACE': 'surface,batch'} + _FORCE_ENVIRON_FOR_WRAPPERS = {'GRPC_TRACE': 'api'} languages = set(_LANGUAGES[l] for l in itertools.chain.from_iterable( From 63256a7c5efe774270311b3088331f3865975b3e Mon Sep 17 00:00:00 2001 From: Hannes Magnusson Date: Tue, 6 Oct 2015 15:26:41 -0700 Subject: [PATCH 005/111] Fix #2275 (Make sure PHP example can be run with Apache) Normal constants, like most other things, are cleaned up during RSHUTDOWN. We need to explicitly mark them as persistent using CONST_PERSISTENT --- src/php/ext/grpc/php_grpc.c | 111 +++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 41 deletions(-) diff --git a/src/php/ext/grpc/php_grpc.c b/src/php/ext/grpc/php_grpc.c index 0f730ea7567..4ad78ea0a31 100644 --- a/src/php/ext/grpc/php_grpc.c +++ b/src/php/ext/grpc/php_grpc.c @@ -109,91 +109,120 @@ PHP_MINIT_FUNCTION(grpc) { */ /* Register call error constants */ grpc_init(); - REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK, CONST_CS); - REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR, CONST_CS); + REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK, + CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_SERVER", - GRPC_CALL_ERROR_NOT_ON_SERVER, CONST_CS); + GRPC_CALL_ERROR_NOT_ON_SERVER, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_CLIENT", - GRPC_CALL_ERROR_NOT_ON_CLIENT, CONST_CS); + GRPC_CALL_ERROR_NOT_ON_CLIENT, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_INVOKED", - GRPC_CALL_ERROR_ALREADY_INVOKED, CONST_CS); + GRPC_CALL_ERROR_ALREADY_INVOKED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_INVOKED", - GRPC_CALL_ERROR_NOT_INVOKED, CONST_CS); + GRPC_CALL_ERROR_NOT_INVOKED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_FINISHED", - GRPC_CALL_ERROR_ALREADY_FINISHED, CONST_CS); + GRPC_CALL_ERROR_ALREADY_FINISHED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_TOO_MANY_OPERATIONS", - GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, CONST_CS); + GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_INVALID_FLAGS", - GRPC_CALL_ERROR_INVALID_FLAGS, CONST_CS); + GRPC_CALL_ERROR_INVALID_FLAGS, + CONST_CS | CONST_PERSISTENT); /* Register flag constants */ REGISTER_LONG_CONSTANT("Grpc\\WRITE_BUFFER_HINT", GRPC_WRITE_BUFFER_HINT, - CONST_CS); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\WRITE_NO_COMPRESS", GRPC_WRITE_NO_COMPRESS, - CONST_CS); + CONST_CS | CONST_PERSISTENT); /* Register status constants */ - REGISTER_LONG_CONSTANT("Grpc\\STATUS_OK", GRPC_STATUS_OK, CONST_CS); + REGISTER_LONG_CONSTANT("Grpc\\STATUS_OK", GRPC_STATUS_OK, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_CANCELLED", GRPC_STATUS_CANCELLED, - CONST_CS); - REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNKNOWN", GRPC_STATUS_UNKNOWN, CONST_CS); + CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNKNOWN", GRPC_STATUS_UNKNOWN, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_INVALID_ARGUMENT", - GRPC_STATUS_INVALID_ARGUMENT, CONST_CS); + GRPC_STATUS_INVALID_ARGUMENT, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_DEADLINE_EXCEEDED", - GRPC_STATUS_DEADLINE_EXCEEDED, CONST_CS); + GRPC_STATUS_DEADLINE_EXCEEDED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_NOT_FOUND", GRPC_STATUS_NOT_FOUND, - CONST_CS); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_ALREADY_EXISTS", - GRPC_STATUS_ALREADY_EXISTS, CONST_CS); + GRPC_STATUS_ALREADY_EXISTS, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_PERMISSION_DENIED", - GRPC_STATUS_PERMISSION_DENIED, CONST_CS); + GRPC_STATUS_PERMISSION_DENIED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAUTHENTICATED", - GRPC_STATUS_UNAUTHENTICATED, CONST_CS); + GRPC_STATUS_UNAUTHENTICATED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_RESOURCE_EXHAUSTED", - GRPC_STATUS_RESOURCE_EXHAUSTED, CONST_CS); + GRPC_STATUS_RESOURCE_EXHAUSTED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_FAILED_PRECONDITION", - GRPC_STATUS_FAILED_PRECONDITION, CONST_CS); - REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED, CONST_CS); + GRPC_STATUS_FAILED_PRECONDITION, + CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_OUT_OF_RANGE", GRPC_STATUS_OUT_OF_RANGE, - CONST_CS); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNIMPLEMENTED", - GRPC_STATUS_UNIMPLEMENTED, CONST_CS); + GRPC_STATUS_UNIMPLEMENTED, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_INTERNAL", GRPC_STATUS_INTERNAL, - CONST_CS); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAVAILABLE", GRPC_STATUS_UNAVAILABLE, - CONST_CS); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_DATA_LOSS", GRPC_STATUS_DATA_LOSS, - CONST_CS); + CONST_CS | CONST_PERSISTENT); /* Register op type constants */ REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_INITIAL_METADATA", - GRPC_OP_SEND_INITIAL_METADATA, CONST_CS); + GRPC_OP_SEND_INITIAL_METADATA, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_MESSAGE", - GRPC_OP_SEND_MESSAGE, CONST_CS); + GRPC_OP_SEND_MESSAGE, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_CLOSE_FROM_CLIENT", - GRPC_OP_SEND_CLOSE_FROM_CLIENT, CONST_CS); + GRPC_OP_SEND_CLOSE_FROM_CLIENT, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_SEND_STATUS_FROM_SERVER", - GRPC_OP_SEND_STATUS_FROM_SERVER, CONST_CS); + GRPC_OP_SEND_STATUS_FROM_SERVER, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_INITIAL_METADATA", - GRPC_OP_RECV_INITIAL_METADATA, CONST_CS); + GRPC_OP_RECV_INITIAL_METADATA, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_MESSAGE", - GRPC_OP_RECV_MESSAGE, CONST_CS); + GRPC_OP_RECV_MESSAGE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_STATUS_ON_CLIENT", - GRPC_OP_RECV_STATUS_ON_CLIENT, CONST_CS); + GRPC_OP_RECV_STATUS_ON_CLIENT, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_CLOSE_ON_SERVER", - GRPC_OP_RECV_CLOSE_ON_SERVER, CONST_CS); + GRPC_OP_RECV_CLOSE_ON_SERVER, + CONST_CS | CONST_PERSISTENT); /* Register connectivity state constants */ REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_IDLE", - GRPC_CHANNEL_IDLE, CONST_CS); + GRPC_CHANNEL_IDLE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_CONNECTING", - GRPC_CHANNEL_CONNECTING, CONST_CS); + GRPC_CHANNEL_CONNECTING, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_READY", - GRPC_CHANNEL_READY, CONST_CS); + GRPC_CHANNEL_READY, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_TRANSIENT_FAILURE", - GRPC_CHANNEL_TRANSIENT_FAILURE, CONST_CS); + GRPC_CHANNEL_TRANSIENT_FAILURE, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_FATAL_FAILURE", - GRPC_CHANNEL_FATAL_FAILURE, CONST_CS); + GRPC_CHANNEL_FATAL_FAILURE, + CONST_CS | CONST_PERSISTENT); grpc_init_call(TSRMLS_C); grpc_init_channel(TSRMLS_C); From 5a65bcd48cb582c5f41e93f9ab618bffc3b5d8a1 Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi Date: Fri, 25 Sep 2015 11:27:10 -0700 Subject: [PATCH 006/111] Bring Cython tests back online --- .../grpcio/grpc/_cython/_cygrpc/call.pyx | 8 +- .../grpcio/grpc/_cython/_cygrpc/channel.pyx | 16 +++- .../grpc/_cython/_cygrpc/completion_queue.pyx | 8 +- .../grpc/_cython/_cygrpc/credentials.pyx | 40 +++++----- .../grpcio/grpc/_cython/_cygrpc/grpc.pxd | 73 ++++++++++++------- .../grpcio/grpc/_cython/_cygrpc/records.pyx | 32 ++++++-- .../grpcio/grpc/_cython/_cygrpc/server.pyx | 7 +- src/python/grpcio/grpc/_cython/cygrpc.pyx | 12 +-- src/python/grpcio/requirements.txt | 1 + src/python/grpcio/setup.py | 42 ++++++++++- src/python/grpcio_test/.gitignore | 2 +- .../grpc_test/_cython/cygrpc_test.py | 22 +++--- .../grpcio_test/grpc_test/test_common.py | 12 ++- src/python/grpcio_test/setup.cfg | 1 - src/python/grpcio_test/setup.py | 2 +- tools/dockerfile/grpc_python_base/Dockerfile | 2 +- 16 files changed, 188 insertions(+), 92 deletions(-) diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx index 4349786b3a2..ed037b660a2 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx @@ -29,6 +29,7 @@ cimport cpython +from grpc._cython._cygrpc cimport grpc from grpc._cython._cygrpc cimport records @@ -49,7 +50,7 @@ cdef class Call: cpython.Py_INCREF(operation_tag) return grpc.grpc_call_start_batch( self.c_call, cy_operations.c_ops, cy_operations.c_nops, - operation_tag) + operation_tag, NULL) def cancel(self, grpc.grpc_status_code error_code=grpc.GRPC_STATUS__DO_NOT_USE, @@ -67,9 +68,10 @@ cdef class Call: raise TypeError("expected details to be str or bytes") if error_code != grpc.GRPC_STATUS__DO_NOT_USE: self.references.append(details) - return grpc.grpc_call_cancel_with_status(self.c_call, error_code, details) + return grpc.grpc_call_cancel_with_status(self.c_call, error_code, details, + NULL) else: - return grpc.grpc_call_cancel(self.c_call) + return grpc.grpc_call_cancel(self.c_call, NULL) def __dealloc__(self): if self.c_call != NULL: diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx index b20313818d9..b52ddb6bcd4 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx @@ -30,6 +30,7 @@ from grpc._cython._cygrpc cimport call from grpc._cython._cygrpc cimport completion_queue from grpc._cython._cygrpc cimport credentials +from grpc._cython._cygrpc cimport grpc from grpc._cython._cygrpc cimport records @@ -49,15 +50,17 @@ cdef class Channel: else: raise TypeError("expected target to be str or bytes") if client_credentials is None: - self.c_channel = grpc.grpc_channel_create(target, c_arguments) + self.c_channel = grpc.grpc_insecure_channel_create(target, c_arguments, + NULL) else: self.c_channel = grpc.grpc_secure_channel_create( - client_credentials.c_credentials, target, c_arguments) + client_credentials.c_credentials, target, c_arguments, NULL) self.references.append(client_credentials) self.references.append(target) self.references.append(arguments) - def create_call(self, completion_queue.CompletionQueue queue not None, + def create_call(self, call.Call parent, int flags, + completion_queue.CompletionQueue queue not None, method, host, records.Timespec deadline not None): if queue.is_shutting_down: raise ValueError("queue must not be shutting down or shutdown") @@ -75,8 +78,13 @@ cdef class Channel: raise TypeError("expected host to be str or bytes") cdef call.Call operation_call = call.Call() operation_call.references = [self, method, host, queue] + cdef grpc.grpc_call *parent_call = NULL + if parent is not None: + parent_call = parent.c_call operation_call.c_call = grpc.grpc_channel_create_call( - self.c_channel, queue.c_completion_queue, method, host, deadline.c_time) + self.c_channel, parent_call, flags, + queue.c_completion_queue, method, host, deadline.c_time, + NULL) return operation_call def __dealloc__(self): diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx index 886d85360af..a7a265eab7d 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx @@ -30,6 +30,7 @@ cimport cpython from grpc._cython._cygrpc cimport call +from grpc._cython._cygrpc cimport grpc from grpc._cython._cygrpc cimport records import threading @@ -39,7 +40,7 @@ import time cdef class CompletionQueue: def __cinit__(self): - self.c_completion_queue = grpc.grpc_completion_queue_create() + self.c_completion_queue = grpc.grpc_completion_queue_create(NULL) self.is_shutting_down = False self.is_shutdown = False self.poll_condition = threading.Condition() @@ -48,7 +49,8 @@ cdef class CompletionQueue: def poll(self, records.Timespec deadline=None): # We name this 'poll' to avoid problems with CPython's expectations for # 'special' methods (like next and __next__). - cdef grpc.gpr_timespec c_deadline = grpc.gpr_inf_future + cdef grpc.gpr_timespec c_deadline = grpc.gpr_inf_future( + grpc.GPR_CLOCK_REALTIME) cdef records.OperationTag tag = None cdef object user_tag = None cdef call.Call operation_call = None @@ -66,7 +68,7 @@ cdef class CompletionQueue: self.is_polling = True with nogil: event = grpc.grpc_completion_queue_next( - self.c_completion_queue, c_deadline) + self.c_completion_queue, c_deadline, NULL) with self.poll_condition: self.is_polling = False self.poll_condition.notify() diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx index dc40a7a6113..608207f0a22 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx @@ -27,6 +27,7 @@ # (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 grpc._cython._cygrpc cimport grpc from grpc._cython._cygrpc cimport records @@ -81,13 +82,11 @@ def client_credentials_ssl(pem_root_certificates, credentials.references.append(pem_root_certificates) if ssl_pem_key_cert_pair is not None: credentials.c_credentials = grpc.grpc_ssl_credentials_create( - c_pem_root_certificates, &ssl_pem_key_cert_pair.c_pair - ) + c_pem_root_certificates, &ssl_pem_key_cert_pair.c_pair, NULL) credentials.references.append(ssl_pem_key_cert_pair) else: credentials.c_credentials = grpc.grpc_ssl_credentials_create( - c_pem_root_certificates, NULL - ) + c_pem_root_certificates, NULL, NULL) def client_credentials_composite_credentials( ClientCredentials credentials_1 not None, @@ -96,18 +95,20 @@ def client_credentials_composite_credentials( raise ValueError("passed credentials must both be valid") cdef ClientCredentials credentials = ClientCredentials() credentials.c_credentials = grpc.grpc_composite_credentials_create( - credentials_1.c_credentials, credentials_2.c_credentials) + credentials_1.c_credentials, credentials_2.c_credentials, NULL) credentials.references.append(credentials_1) credentials.references.append(credentials_2) return credentials -def client_credentials_compute_engine(): +def client_credentials_google_compute_engine(): cdef ClientCredentials credentials = ClientCredentials() - credentials.c_credentials = grpc.grpc_compute_engine_credentials_create() + credentials.c_credentials = ( + grpc.grpc_google_compute_engine_credentials_create(NULL)) return credentials #TODO rename to something like client_credentials_service_account_jwt_access. -def client_credentials_jwt(json_key, records.Timespec token_lifetime not None): +def client_credentials_service_account_jwt_access( + json_key, records.Timespec token_lifetime not None): if isinstance(json_key, bytes): pass elif isinstance(json_key, basestring): @@ -115,12 +116,13 @@ def client_credentials_jwt(json_key, records.Timespec token_lifetime not None): else: raise TypeError("expected json_key to be str or bytes") cdef ClientCredentials credentials = ClientCredentials() - credentials.c_credentials = grpc.grpc_service_account_jwt_access_credentials_create( - json_key, token_lifetime.c_time) + credentials.c_credentials = ( + grpc.grpc_service_account_jwt_access_credentials_create( + json_key, token_lifetime.c_time, NULL)) credentials.references.append(json_key) return credentials -def client_credentials_refresh_token(json_refresh_token): +def client_credentials_google_refresh_token(json_refresh_token): if isinstance(json_refresh_token, bytes): pass elif isinstance(json_refresh_token, basestring): @@ -128,12 +130,12 @@ def client_credentials_refresh_token(json_refresh_token): else: raise TypeError("expected json_refresh_token to be str or bytes") cdef ClientCredentials credentials = ClientCredentials() - credentials.c_credentials = grpc.grpc_refresh_token_credentials_create( - json_refresh_token) + credentials.c_credentials = grpc.grpc_google_refresh_token_credentials_create( + json_refresh_token, NULL) credentials.references.append(json_refresh_token) return credentials -def client_credentials_iam(authorization_token, authority_selector): +def client_credentials_google_iam(authorization_token, authority_selector): if isinstance(authorization_token, bytes): pass elif isinstance(authorization_token, basestring): @@ -147,13 +149,14 @@ def client_credentials_iam(authorization_token, authority_selector): else: raise TypeError("expected authority_selector to be str or bytes") cdef ClientCredentials credentials = ClientCredentials() - credentials.c_credentials = grpc.grpc_iam_credentials_create( - authorization_token, authority_selector) + credentials.c_credentials = grpc.grpc_google_iam_credentials_create( + authorization_token, authority_selector, NULL) credentials.references.append(authorization_token) credentials.references.append(authority_selector) return credentials -def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs): +def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs, + bint force_client_auth): if pem_root_certs is None: pass elif isinstance(pem_root_certs, bytes): @@ -181,7 +184,6 @@ def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs): (pem_key_cert_pairs[i]).c_pair) credentials.c_credentials = grpc.grpc_ssl_server_credentials_create( pem_root_certs, credentials.c_ssl_pem_key_cert_pairs, - credentials.c_ssl_pem_key_cert_pairs_count - ) + credentials.c_ssl_pem_key_cert_pairs_count, force_client_auth, NULL) return credentials diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd index 8b46972490b..62d40e7a58e 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd +++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd @@ -64,15 +64,25 @@ cdef extern from "grpc/support/port_platform.h": cdef extern from "grpc/support/time.h": + ctypedef enum gpr_clock_type: + GPR_CLOCK_MONOTONIC + GPR_CLOCK_REALTIME + GPR_CLOCK_PRECISE + GPR_TIMESPAN + ctypedef struct gpr_timespec: libc.time.time_t seconds "tv_sec" int nanoseconds "tv_nsec" + gpr_clock_type clock_type + + gpr_timespec gpr_time_0(gpr_clock_type type) + gpr_timespec gpr_inf_future(gpr_clock_type type) + gpr_timespec gpr_inf_past(gpr_clock_type type) - cdef gpr_timespec gpr_time_0 - cdef gpr_timespec gpr_inf_future - cdef gpr_timespec gpr_inf_past + gpr_timespec gpr_now(gpr_clock_type clock) - gpr_timespec gpr_now() + gpr_timespec gpr_convert_clock_type(gpr_timespec t, + gpr_clock_type target_clock) cdef extern from "grpc/status.h": @@ -255,38 +265,44 @@ cdef extern from "grpc/grpc.h": void grpc_init() void grpc_shutdown() - grpc_completion_queue *grpc_completion_queue_create() + grpc_completion_queue *grpc_completion_queue_create(void *reserved) grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, - gpr_timespec deadline) nogil + gpr_timespec deadline, + void *reserved) nogil void grpc_completion_queue_shutdown(grpc_completion_queue *cq) void grpc_completion_queue_destroy(grpc_completion_queue *cq) grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, - size_t nops, void *tag) - grpc_call_error grpc_call_cancel(grpc_call *call) + size_t nops, void *tag, void *reserved) + grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved) grpc_call_error grpc_call_cancel_with_status(grpc_call *call, grpc_status_code status, - const char *description) + const char *description, + void *reserved) void grpc_call_destroy(grpc_call *call) - grpc_channel *grpc_channel_create(const char *target, - const grpc_channel_args *args) + grpc_channel *grpc_insecure_channel_create(const char *target, + const grpc_channel_args *args, + void *reserved) grpc_call *grpc_channel_create_call(grpc_channel *channel, + grpc_call *parent_call, + gpr_uint32 propagation_mask, grpc_completion_queue *completion_queue, const char *method, const char *host, - gpr_timespec deadline) + gpr_timespec deadline, void *reserved) void grpc_channel_destroy(grpc_channel *channel) - grpc_server *grpc_server_create(const grpc_channel_args *args) + grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved) grpc_call_error grpc_server_request_call( grpc_server *server, grpc_call **call, grpc_call_details *details, grpc_metadata_array *request_metadata, grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag_new) void grpc_server_register_completion_queue(grpc_server *server, - grpc_completion_queue *cq) - int grpc_server_add_http2_port(grpc_server *server, const char *addr) + grpc_completion_queue *cq, + void *reserved) + int grpc_server_add_insecure_http2_port(grpc_server *server, const char *addr) void grpc_server_start(grpc_server *server) void grpc_server_shutdown_and_notify( grpc_server *server, grpc_completion_queue *cq, void *tag) @@ -306,22 +322,27 @@ cdef extern from "grpc/grpc_security.h": grpc_credentials *grpc_google_default_credentials_create() 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) grpc_credentials *grpc_composite_credentials_create(grpc_credentials *creds1, - grpc_credentials *creds2) - grpc_credentials *grpc_compute_engine_credentials_create() - grpc_credentials *grpc_service_account_jwt_access_credentials_create(const char *json_key, - gpr_timespec token_lifetime) - grpc_credentials *grpc_refresh_token_credentials_create( - const char *json_refresh_token) - grpc_credentials *grpc_iam_credentials_create(const char *authorization_token, - const char *authority_selector) + grpc_credentials *creds2, + void *reserved) + grpc_credentials *grpc_google_compute_engine_credentials_create( + void *reserved) + grpc_credentials *grpc_service_account_jwt_access_credentials_create( + const char *json_key, + gpr_timespec token_lifetime, void *reserved) + grpc_credentials *grpc_google_refresh_token_credentials_create( + const char *json_refresh_token, void *reserved) + grpc_credentials *grpc_google_iam_credentials_create( + const char *authorization_token, const char *authority_selector, + void *reserved) void grpc_credentials_release(grpc_credentials *creds) grpc_channel *grpc_secure_channel_create( grpc_credentials *creds, const char *target, - const grpc_channel_args *args) + const grpc_channel_args *args, void *reserved) ctypedef struct grpc_server_credentials: # We don't care about the internals (and in fact don't know them) @@ -330,7 +351,7 @@ cdef extern from "grpc/grpc_security.h": grpc_server_credentials *grpc_ssl_server_credentials_create( const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, - size_t num_key_cert_pairs) + size_t num_key_cert_pairs, int force_client_auth, void *reserved) void grpc_server_credentials_release(grpc_server_credentials *creds) int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr, diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx index 4814769fd2a..8edee09c2d4 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx @@ -87,28 +87,38 @@ cdef class Timespec: def __cinit__(self, time): if time is None: - self.c_time = grpc.gpr_now() + self.c_time = grpc.gpr_now(grpc.GPR_CLOCK_REALTIME) elif isinstance(time, float): if time == float("+inf"): - self.c_time = grpc.gpr_inf_future + self.c_time = grpc.gpr_inf_future(grpc.GPR_CLOCK_REALTIME) elif time == float("-inf"): - self.c_time = grpc.gpr_inf_past + self.c_time = grpc.gpr_inf_past(grpc.GPR_CLOCK_REALTIME) else: self.c_time.seconds = time self.c_time.nanoseconds = (time - float(self.c_time.seconds)) * 1e9 + self.c_time.clock_type = grpc.GPR_CLOCK_REALTIME else: raise TypeError("expected time to be float") @property def seconds(self): - return self.c_time.seconds + # TODO(atash) ensure that everywhere a Timespec is created that it's + # converted to GPR_CLOCK_REALTIME then and not every time someone wants to + # read values off in Python. + cdef grpc.gpr_timespec real_time = ( + grpc.gpr_convert_clock_type(self.c_time, grpc.GPR_CLOCK_REALTIME)) + return real_time.seconds @property def nanoseconds(self): - return self.c_time.nanoseconds + cdef grpc.gpr_timespec real_time = ( + grpc.gpr_convert_clock_type(self.c_time, grpc.GPR_CLOCK_REALTIME)) + return real_time.nanoseconds def __float__(self): - return self.c_time.seconds + self.c_time.nanoseconds / 1e9 + cdef grpc.gpr_timespec real_time = ( + grpc.gpr_convert_clock_type(self.c_time, grpc.GPR_CLOCK_REALTIME)) + return real_time.seconds + real_time.nanoseconds / 1e9 infinite_future = Timespec(float("+inf")) infinite_past = Timespec(float("-inf")) @@ -339,13 +349,16 @@ cdef class _MetadataIterator: self.i = 0 self.metadata = metadata + def __iter__(self): + return self + def __next__(self): if self.i < len(self.metadata): result = self.metadata[self.i] self.i = self.i + 1 return result else: - raise StopIteration() + raise StopIteration cdef class Metadata: @@ -536,13 +549,16 @@ cdef class _OperationsIterator: self.i = 0 self.operations = operations + def __iter__(self): + return self + def __next__(self): if self.i < len(self.operations): result = self.operations[self.i] self.i = self.i + 1 return result else: - raise StopIteration() + raise StopIteration cdef class Operations: diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx index dcf9d383377..6d20d2910c7 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx +++ b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx @@ -32,6 +32,7 @@ cimport cpython from grpc._cython._cygrpc cimport call from grpc._cython._cygrpc cimport completion_queue from grpc._cython._cygrpc cimport credentials +from grpc._cython._cygrpc cimport grpc from grpc._cython._cygrpc cimport records import time @@ -46,7 +47,7 @@ cdef class Server: if arguments is not None: c_arguments = &arguments.c_args self.references.append(arguments) - self.c_server = grpc.grpc_server_create(c_arguments) + self.c_server = grpc.grpc_server_create(c_arguments, NULL) self.is_started = False self.is_shutting_down = False self.is_shutdown = False @@ -78,7 +79,7 @@ cdef class Server: if self.is_started: raise ValueError("cannot register completion queues after start") grpc.grpc_server_register_completion_queue( - self.c_server, queue.c_completion_queue) + self.c_server, queue.c_completion_queue, NULL) self.registered_completion_queues.append(queue) def start(self): @@ -103,7 +104,7 @@ cdef class Server: return grpc.grpc_server_add_secure_http2_port( self.c_server, address, server_credentials.c_credentials) else: - return grpc.grpc_server_add_http2_port(self.c_server, address) + return grpc.grpc_server_add_insecure_http2_port(self.c_server, address) def shutdown(self, completion_queue.CompletionQueue queue not None, tag): cdef records.OperationTag operation_tag diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx index f4d9661580b..1ef2997db51 100644 --- a/src/python/grpcio/grpc/_cython/cygrpc.pyx +++ b/src/python/grpcio/grpc/_cython/cygrpc.pyx @@ -78,11 +78,13 @@ client_credentials_google_default = ( client_credentials_ssl = credentials.client_credentials_ssl client_credentials_composite_credentials = ( credentials.client_credentials_composite_credentials) -client_credentials_compute_engine = ( - credentials.client_credentials_compute_engine) -client_credentials_jwt = credentials.client_credentials_jwt -client_credentials_refresh_token = credentials.client_credentials_refresh_token -client_credentials_iam = credentials.client_credentials_iam +client_credentials_google_compute_engine = ( + credentials.client_credentials_google_compute_engine) +client_credentials_jwt_access = ( + credentials.client_credentials_service_account_jwt_access) +client_credentials_refresh_token = ( + credentials.client_credentials_google_refresh_token) +client_credentials_google_iam = credentials.client_credentials_google_iam server_credentials_ssl = credentials.server_credentials_ssl CompletionQueue = completion_queue.CompletionQueue diff --git a/src/python/grpcio/requirements.txt b/src/python/grpcio/requirements.txt index 77356e0a747..ee8568120b7 100644 --- a/src/python/grpcio/requirements.txt +++ b/src/python/grpcio/requirements.txt @@ -1,2 +1,3 @@ enum34>=1.0.4 futures>=2.2.0 +cython>=0.23 diff --git a/src/python/grpcio/setup.py b/src/python/grpcio/setup.py index 8b87c09d5c2..97fa4fe6b3f 100644 --- a/src/python/grpcio/setup.py +++ b/src/python/grpcio/setup.py @@ -34,6 +34,7 @@ import os.path import sys from distutils import core as _core +from distutils import extension as _extension import setuptools # Ensure we're in the proper directory whether or not we're being used by pip. @@ -59,6 +60,18 @@ _C_EXTENSION_SOURCES = ( 'grpc/_adapter/_c/types/server.c', ) +_CYTHON_EXTENSION_PACKAGE_NAMES = () + +_CYTHON_EXTENSION_MODULE_NAMES = ( + 'grpc._cython.cygrpc', + 'grpc._cython._cygrpc.call', + 'grpc._cython._cygrpc.channel', + 'grpc._cython._cygrpc.completion_queue', + 'grpc._cython._cygrpc.credentials', + 'grpc._cython._cygrpc.records', + 'grpc._cython._cygrpc.server', +) + _EXTENSION_INCLUDE_DIRECTORIES = ( '.', ) @@ -78,9 +91,30 @@ _C_EXTENSION_MODULE = _core.Extension( ) _EXTENSION_MODULES = [_C_EXTENSION_MODULE] -_PACKAGES = ( - setuptools.find_packages('.', exclude=['*._cython', '*._cython.*']) -) + +def cython_extensions(package_names, module_names, include_dirs, libraries, + build_with_cython=False): + file_extension = 'pyx' if build_with_cython else 'c' + module_files = [name.replace('.', '/') + '.' + file_extension + for name in module_names] + extensions = [ + _extension.Extension( + name=module_name, sources=[module_file], + include_dirs=include_dirs, libraries=libraries + ) for (module_name, module_file) in zip(module_names, module_files) + ] + if build_with_cython: + import Cython.Build + return Cython.Build.cythonize(extensions) + else: + return extensions + +_CYTHON_EXTENSION_MODULES = cython_extensions( + list(_CYTHON_EXTENSION_PACKAGE_NAMES), list(_CYTHON_EXTENSION_MODULE_NAMES), + list(_EXTENSION_INCLUDE_DIRECTORIES), list(_EXTENSION_LIBRARIES), + bool(_BUILD_WITH_CYTHON)) + +_PACKAGES = setuptools.find_packages('.') _PACKAGE_DIRECTORIES = { '': '.', @@ -104,7 +138,7 @@ _COMMAND_CLASS = { setuptools.setup( name='grpcio', version='0.11.0b1', - ext_modules=_EXTENSION_MODULES, + ext_modules=_EXTENSION_MODULES + _CYTHON_EXTENSION_MODULES, packages=list(_PACKAGES), package_dir=_PACKAGE_DIRECTORIES, install_requires=_INSTALL_REQUIRES, diff --git a/src/python/grpcio_test/.gitignore b/src/python/grpcio_test/.gitignore index e3540baa7cc..4bb4d42dfe2 100644 --- a/src/python/grpcio_test/.gitignore +++ b/src/python/grpcio_test/.gitignore @@ -7,5 +7,5 @@ dist/ *.eggs/ .coverage .coverage.* -.cache +.cache/ nosetests.xml diff --git a/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py index 637506b42e1..1307a30ca0b 100644 --- a/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py +++ b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py @@ -32,6 +32,7 @@ import unittest from grpc._cython import cygrpc from grpc_test._cython import test_utilities +from grpc_test import test_common class TypeSmokeTest(unittest.TestCase): @@ -139,7 +140,7 @@ class InsecureServerInsecureClient(unittest.TestCase): CLIENT_METADATA_BIN_VALUE = b'\0'*1000 SERVER_INITIAL_METADATA_KEY = b'init_me_me_me' SERVER_INITIAL_METADATA_VALUE = b'whodawha?' - SERVER_TRAILING_METADATA_KEY = b'California_is_in_a_drought' + SERVER_TRAILING_METADATA_KEY = b'california_is_in_a_drought' SERVER_TRAILING_METADATA_VALUE = b'zomg it is' SERVER_STATUS_CODE = cygrpc.StatusCode.ok SERVER_STATUS_DETAILS = b'our work is never over' @@ -158,8 +159,8 @@ class InsecureServerInsecureClient(unittest.TestCase): self.assertEqual(cygrpc.CallError.ok, request_call_result) client_call_tag = object() - client_call = self.client_channel.create_call(self.client_completion_queue, - METHOD, HOST, cygrpc_deadline) + client_call = self.client_channel.create_call( + None, 0, self.client_completion_queue, METHOD, HOST, cygrpc_deadline) client_initial_metadata = cygrpc.Metadata([ cygrpc.Metadatum(CLIENT_METADATA_ASCII_KEY, CLIENT_METADATA_ASCII_VALUE), @@ -182,8 +183,9 @@ class InsecureServerInsecureClient(unittest.TestCase): self.assertIsInstance(request_event.operation_call, cygrpc.Call) self.assertIs(server_request_tag, request_event.tag) self.assertEqual(0, len(request_event.batch_operations)) - self.assertEqual(dict(client_initial_metadata), - dict(request_event.request_metadata)) + self.assertTrue( + test_common.metadata_transmitted(client_initial_metadata, + request_event.request_metadata)) self.assertEqual(METHOD, request_event.request_call_details.method) self.assertEqual(HOST, request_event.request_call_details.host) self.assertLess( @@ -218,13 +220,15 @@ class InsecureServerInsecureClient(unittest.TestCase): self.assertNotIn(client_result.type, found_client_op_types) found_client_op_types.add(client_result.type) if client_result.type == cygrpc.OperationType.receive_initial_metadata: - self.assertEqual(dict(server_initial_metadata), - dict(client_result.received_metadata)) + self.assertTrue( + test_common.metadata_transmitted(server_initial_metadata, + client_result.received_metadata)) elif client_result.type == cygrpc.OperationType.receive_message: self.assertEqual(RESPONSE, client_result.received_message.bytes()) elif client_result.type == cygrpc.OperationType.receive_status_on_client: - self.assertEqual(dict(server_trailing_metadata), - dict(client_result.received_metadata)) + self.assertTrue( + test_common.metadata_transmitted(server_trailing_metadata, + client_result.received_metadata)) self.assertEqual(SERVER_STATUS_DETAILS, client_result.received_status_details) self.assertEqual(SERVER_STATUS_CODE, client_result.received_status_code) diff --git a/src/python/grpcio_test/grpc_test/test_common.py b/src/python/grpcio_test/grpc_test/test_common.py index 44284be88bb..29431bfb9dd 100644 --- a/src/python/grpcio_test/grpc_test/test_common.py +++ b/src/python/grpcio_test/grpc_test/test_common.py @@ -46,19 +46,23 @@ def metadata_transmitted(original_metadata, transmitted_metadata): the same key. Args: - original_metadata: A metadata value used in a test of gRPC. + original_metadata: A metadata value used in a test of gRPC. An iterable over + iterables of length 2. transmitted_metadata: A metadata value corresponding to original_metadata - after having been transmitted via gRPC. + after having been transmitted via gRPC. An iterable over iterables of + length 2. Returns: A boolean indicating whether transmitted_metadata accurately reflects original_metadata after having been transmitted via gRPC. """ original = collections.defaultdict(list) - for key, value in original_metadata: + for key_value_pair in original_metadata: + key, value = tuple(key_value_pair) original[key].append(value) transmitted = collections.defaultdict(list) - for key, value in transmitted_metadata: + for key_value_pair in transmitted_metadata: + key, value = tuple(key_value_pair) transmitted[key].append(value) for key, values in original.iteritems(): diff --git a/src/python/grpcio_test/setup.cfg b/src/python/grpcio_test/setup.cfg index b32d3f59728..3be93cb9189 100644 --- a/src/python/grpcio_test/setup.cfg +++ b/src/python/grpcio_test/setup.cfg @@ -1,3 +1,2 @@ [pytest] -norecursedirs = _cython python_files = *_test.py diff --git a/src/python/grpcio_test/setup.py b/src/python/grpcio_test/setup.py index fe36bc9232b..0f43b4a6387 100644 --- a/src/python/grpcio_test/setup.py +++ b/src/python/grpcio_test/setup.py @@ -40,7 +40,7 @@ os.chdir(os.path.dirname(os.path.abspath(__file__))) # Break import-style to ensure we can actually find our commands module. import commands -_PACKAGES = setuptools.find_packages('.', exclude=['*._cython', '*._cython.*']) +_PACKAGES = setuptools.find_packages('.') _PACKAGE_DIRECTORIES = { '': '.', diff --git a/tools/dockerfile/grpc_python_base/Dockerfile b/tools/dockerfile/grpc_python_base/Dockerfile index 90a57bf3414..6ef7a111dff 100644 --- a/tools/dockerfile/grpc_python_base/Dockerfile +++ b/tools/dockerfile/grpc_python_base/Dockerfile @@ -43,7 +43,7 @@ RUN apt-get update && apt-get install -y \ python-virtualenv # Install Python packages from PyPI -RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 +RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 cython==0.23 # Get the GRPC source from GitHub RUN git clone --recursive https://github.com/grpc/grpc.git /var/local/git/grpc From 5561de2c67b4a927ab9237405833616780ce7473 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 7 Oct 2015 16:52:09 -0700 Subject: [PATCH 007/111] Shortened long C# benchmark test --- src/csharp/Grpc.Core.Tests/PInvokeTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs index 714c2f7494c..073c502daf3 100644 --- a/src/csharp/Grpc.Core.Tests/PInvokeTest.cs +++ b/src/csharp/Grpc.Core.Tests/PInvokeTest.cs @@ -60,7 +60,7 @@ namespace Grpc.Core.Tests public void CompletionQueueCreateDestroyBenchmark() { BenchmarkUtil.RunBenchmark( - 100000, 1000000, + 10, 10, () => { CompletionQueueSafeHandle cq = CompletionQueueSafeHandle.Create(); From 7fd0fd5023a74aa02a43f4a956b59e4965e651ce Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Wed, 7 Oct 2015 17:41:08 -0700 Subject: [PATCH 008/111] C++ Alarm implementation (with tests). --- BUILD | 4 + Makefile | 49 ++++- build.yaml | 14 ++ grpc.gyp | 5 +- include/grpc++/alarm.h | 68 +++++++ include/grpc/grpc.h | 11 +- src/cpp/common/alarm.cc | 49 +++++ test/cpp/common/alarm_test.cc | 91 +++++++++ third_party/protobuf | 2 +- tools/doxygen/Doxyfile.c++ | 3 +- tools/doxygen/Doxyfile.c++.internal | 4 +- tools/run_tests/sources_and_headers.json | 22 ++ tools/run_tests/tests.json | 18 ++ .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 + .../grpc++_unsecure.vcxproj.filters | 6 + vsprojects/vcxproj/grpc++/grpc++.vcxproj | 3 + .../vcxproj/grpc++/grpc++.vcxproj.filters | 6 + .../grpc++_unsecure/grpc++_unsecure.vcxproj | 3 + .../grpc++_unsecure.vcxproj.filters | 6 + .../test/alarm_test/alarm_test.vcxproj | 192 ++++++++++++++++++ .../alarm_test/alarm_test.vcxproj.filters | 21 ++ 21 files changed, 569 insertions(+), 11 deletions(-) create mode 100644 include/grpc++/alarm.h create mode 100644 src/cpp/common/alarm.cc create mode 100644 test/cpp/common/alarm_test.cc create mode 100644 vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj create mode 100644 vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj.filters diff --git a/BUILD b/BUILD index 6ad367632d3..b9b0fddd14e 100644 --- a/BUILD +++ b/BUILD @@ -738,6 +738,7 @@ cc_library( "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", + "src/cpp/common/alarm.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/rpc_method.cc", @@ -758,6 +759,7 @@ cc_library( "src/cpp/util/time.cc", ], hdrs = [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", @@ -830,6 +832,7 @@ cc_library( "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", + "src/cpp/common/alarm.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/rpc_method.cc", @@ -850,6 +853,7 @@ cc_library( "src/cpp/util/time.cc", ], hdrs = [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", diff --git a/Makefile b/Makefile index 2b832efb61a..41e02aa4eae 100644 --- a/Makefile +++ b/Makefile @@ -856,6 +856,7 @@ transport_security_test: $(BINDIR)/$(CONFIG)/transport_security_test udp_server_test: $(BINDIR)/$(CONFIG)/udp_server_test uri_parser_test: $(BINDIR)/$(CONFIG)/uri_parser_test workqueue_test: $(BINDIR)/$(CONFIG)/workqueue_test +alarm_test: $(BINDIR)/$(CONFIG)/alarm_test async_end2end_test: $(BINDIR)/$(CONFIG)/async_end2end_test async_streaming_ping_pong_test: $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test async_unary_ping_pong_test: $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test @@ -1736,7 +1737,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_zookeeper buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_alarm_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timer_heap_test $(BINDIR)/$(CONFIG)/timer_list_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test -buildtests_cxx: buildtests_zookeeper privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/auth_property_iterator_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/client_crash_test $(BINDIR)/$(CONFIG)/client_crash_test_server $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test $(BINDIR)/$(CONFIG)/cxx_slice_test $(BINDIR)/$(CONFIG)/cxx_string_ref_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/qps_interarrival_test $(BINDIR)/$(CONFIG)/qps_openloop_test $(BINDIR)/$(CONFIG)/qps_test $(BINDIR)/$(CONFIG)/reconnect_interop_client $(BINDIR)/$(CONFIG)/reconnect_interop_server $(BINDIR)/$(CONFIG)/secure_auth_context_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/streaming_throughput_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test +buildtests_cxx: buildtests_zookeeper privatelibs_cxx $(BINDIR)/$(CONFIG)/alarm_test $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/auth_property_iterator_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/client_crash_test $(BINDIR)/$(CONFIG)/client_crash_test_server $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test $(BINDIR)/$(CONFIG)/cxx_slice_test $(BINDIR)/$(CONFIG)/cxx_string_ref_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/qps_interarrival_test $(BINDIR)/$(CONFIG)/qps_openloop_test $(BINDIR)/$(CONFIG)/qps_test $(BINDIR)/$(CONFIG)/reconnect_interop_client $(BINDIR)/$(CONFIG)/reconnect_interop_server $(BINDIR)/$(CONFIG)/secure_auth_context_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/streaming_throughput_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test ifeq ($(HAS_ZOOKEEPER),true) buildtests_zookeeper: privatelibs_zookeeper $(BINDIR)/$(CONFIG)/zookeeper_test @@ -3318,6 +3319,8 @@ flaky_test_c: buildtests_c test_cxx: test_zookeeper buildtests_cxx + $(E) "[RUN] Testing alarm_test" + $(Q) $(BINDIR)/$(CONFIG)/alarm_test || ( echo test alarm_test failed ; exit 1 ) $(E) "[RUN] Testing async_end2end_test" $(Q) $(BINDIR)/$(CONFIG)/async_end2end_test || ( echo test async_end2end_test failed ; exit 1 ) $(E) "[RUN] Testing async_streaming_ping_pong_test" @@ -4594,6 +4597,7 @@ LIBGRPC++_SRC = \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ + src/cpp/common/alarm.cc \ src/cpp/common/call.cc \ src/cpp/common/completion_queue.cc \ src/cpp/common/rpc_method.cc \ @@ -4614,6 +4618,7 @@ LIBGRPC++_SRC = \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ + include/grpc++/alarm.h \ include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ @@ -4840,6 +4845,7 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ + src/cpp/common/alarm.cc \ src/cpp/common/call.cc \ src/cpp/common/completion_queue.cc \ src/cpp/common/rpc_method.cc \ @@ -4860,6 +4866,7 @@ LIBGRPC++_UNSECURE_SRC = \ src/cpp/util/time.cc \ PUBLIC_HEADERS_CXX += \ + include/grpc++/alarm.h \ include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ @@ -8855,6 +8862,46 @@ endif endif +ALARM_TEST_SRC = \ + test/cpp/common/alarm_test.cc \ + +ALARM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/alarm_test: openssl_dep_error + +else + + +ifeq ($(NO_PROTOBUF),true) + +# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+. + +$(BINDIR)/$(CONFIG)/alarm_test: protobuf_dep_error + +else + +$(BINDIR)/$(CONFIG)/alarm_test: $(PROTOBUF_DEP) $(ALARM_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LDXX) $(LDFLAGS) $(ALARM_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/alarm_test + +endif + +endif + +$(OBJDIR)/$(CONFIG)/test/cpp/common/alarm_test.o: $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_alarm_test: $(ALARM_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(ALARM_TEST_OBJS:.o=.dep) +endif +endif + + ASYNC_END2END_TEST_SRC = \ test/cpp/end2end/async_end2end_test.cc \ diff --git a/build.yaml b/build.yaml index 5399155f212..b0f0da917aa 100644 --- a/build.yaml +++ b/build.yaml @@ -23,6 +23,7 @@ filegroups: - src/core/census/tracing.c - name: grpc++_base public_headers: + - include/grpc++/alarm.h - include/grpc++/channel.h - include/grpc++/client_context.h - include/grpc++/completion_queue.h @@ -79,6 +80,7 @@ filegroups: - src/cpp/client/credentials.cc - src/cpp/client/generic_stub.cc - src/cpp/client/insecure_credentials.cc + - src/cpp/common/alarm.cc - src/cpp/common/call.cc - src/cpp/common/completion_queue.cc - src/cpp/common/rpc_method.cc @@ -1591,6 +1593,18 @@ targets: - mac - linux - posix +- name: alarm_test + build: test + language: c++ + src: + - test/cpp/common/alarm_test.cc + deps: + - grpc++_test_util + - grpc_test_util + - grpc++ + - grpc + - gpr_test_util + - gpr - name: async_end2end_test build: test language: c++ diff --git a/grpc.gyp b/grpc.gyp index 08185ac592e..6c7899ffc31 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -195,8 +195,6 @@ 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -227,6 +225,8 @@ 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -240,6 +240,7 @@ 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', + 'src/core/surface/alarm.c', 'src/core/surface/api_trace.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', diff --git a/include/grpc++/alarm.h b/include/grpc++/alarm.h new file mode 100644 index 00000000000..8cf7f59290c --- /dev/null +++ b/include/grpc++/alarm.h @@ -0,0 +1,68 @@ +/* + * + * 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. + * + */ + +/// An Alarm posts the user provided tag to its associated completion queue upon +/// expiry or cancellation. +#ifndef GRPCXX_ALARM_H +#define GRPCXX_ALARM_H + +#include +#include +#include + +namespace grpc { + +/// A thin wrapper around \a grpc_alarm (see / \a / src/core/surface/alarm.h). +class Alarm: public GrpcLibrary { + public: + /// Create a completion queue alarm instance associated to \a cq. + /// + /// Once the alarm expires (at \a deadline) or it's cancelled (see \a Cancel), + /// an event with tag \a tag will be added to \a cq. If the alarm expired, the + /// event's success bit will be true, false otherwise (ie, upon cancellation). + Alarm(CompletionQueue* cq, gpr_timespec deadline, void* tag); + + /// Destroy the given completion queue alarm, cancelling it in the process. + ~Alarm(); + + /// Cancel a completion queue alarm. Calling this function over an alarm that + /// has already fired has no effect. + void Cancel(); + + private: + grpc_alarm* const alarm_; // owned +}; + +} // namespace grpc + +#endif // GRPCXX_ALARM_H diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 84102c0c756..191ad5db1ec 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -480,14 +480,15 @@ void grpc_completion_queue_destroy(grpc_completion_queue *cq); /** Create a completion queue alarm instance associated to \a cq. * - * Once the alarm expires (at \a deadline) or it's cancelled (see ...), an event - * with tag \a tag will be added to \a cq. If the alarm expired, the event's - * success bit will be true, false otherwise (ie, upon cancellation). */ + * Once the alarm expires (at \a deadline) or it's cancelled (see \a + * grpc_alarm_cancel), an event with tag \a tag will be added to \a cq. If the + * alarm expired, the event's success bit will be true, false otherwise (ie, + * upon cancellation). */ grpc_alarm *grpc_alarm_create(grpc_completion_queue *cq, gpr_timespec deadline, void *tag); -/** Cancel a completion queue alarm. Calling this function ove an alarm that has - * already run has no effect. */ +/** Cancel a completion queue alarm. Calling this function over an alarm that + * has already fired has no effect. */ void grpc_alarm_cancel(grpc_alarm *alarm); /** Destroy the given completion queue alarm, cancelling it in the process. */ diff --git a/src/cpp/common/alarm.cc b/src/cpp/common/alarm.cc new file mode 100644 index 00000000000..bce0b174f84 --- /dev/null +++ b/src/cpp/common/alarm.cc @@ -0,0 +1,49 @@ +/* + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +namespace grpc { + +Alarm::Alarm(CompletionQueue* cq, gpr_timespec deadline, void* tag) + : alarm_(grpc_alarm_create(cq->cq(), deadline, tag)) {} + +Alarm::~Alarm() { + grpc_alarm_destroy(alarm_); +} + +void Alarm::Cancel() { + grpc_alarm_cancel(alarm_); +} + +} // namespace grpc diff --git a/test/cpp/common/alarm_test.cc b/test/cpp/common/alarm_test.cc new file mode 100644 index 00000000000..18083cd8bd4 --- /dev/null +++ b/test/cpp/common/alarm_test.cc @@ -0,0 +1,91 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "test/core/util/test_config.h" + +namespace grpc { +namespace { + +class TestTag : public CompletionQueueTag { + public: + TestTag() : tag_(0) {} + TestTag(gpr_intptr tag) : tag_(tag) {} + bool FinalizeResult(void** tag, bool* status) { return true; } + gpr_intptr tag() { return tag_; } + + private: + gpr_intptr tag_; +}; + +TEST(AlarmTest, RegularExpiry) { + CompletionQueue cq; + TestTag input_tag(1618033); + Alarm alarm(&cq, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1), &input_tag); + + TestTag* output_tag; + bool ok; + const CompletionQueue::NextStatus status = cq.AsyncNext( + (void**)&output_tag, &ok, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2)); + + EXPECT_EQ(status, CompletionQueue::GOT_EVENT); + EXPECT_TRUE(ok); + EXPECT_EQ(output_tag->tag(), input_tag.tag()); +} + +TEST(AlarmTest, Cancellation) { + CompletionQueue cq; + TestTag input_tag(1618033); + Alarm alarm(&cq, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(2), &input_tag); + alarm.Cancel(); + + TestTag* output_tag; + bool ok; + const CompletionQueue::NextStatus status = cq.AsyncNext( + (void**)&output_tag, &ok, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1)); + + EXPECT_EQ(status, CompletionQueue::GOT_EVENT); + EXPECT_FALSE(ok); + EXPECT_EQ(output_tag->tag(), input_tag.tag()); +} + +} // namespace +} // namespace grpc + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/third_party/protobuf b/third_party/protobuf index 8fce8933649..23408684b4d 160000 --- a/third_party/protobuf +++ b/third_party/protobuf @@ -1 +1 @@ -Subproject commit 8fce8933649ce09c1661ff2b5b7f6eb79badd251 +Subproject commit 23408684b4d2bf1b25e14314413a14d542c18bc4 diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index 5d592c8e0ae..81338397787 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -760,7 +760,8 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc++/channel.h \ +INPUT = include/grpc++/alarm.h \ +include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/create_channel.h \ diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index bbd1706fb05..583c0575567 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -760,7 +760,8 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = include/grpc++/channel.h \ +INPUT = include/grpc++/alarm.h \ +include/grpc++/channel.h \ include/grpc++/client_context.h \ include/grpc++/completion_queue.h \ include/grpc++/create_channel.h \ @@ -823,6 +824,7 @@ src/cpp/client/create_channel_internal.cc \ src/cpp/client/credentials.cc \ src/cpp/client/generic_stub.cc \ src/cpp/client/insecure_credentials.cc \ +src/cpp/common/alarm.cc \ src/cpp/common/call.cc \ src/cpp/common/completion_queue.cc \ src/cpp/common/rpc_method.cc \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 597e8f27ee0..8f0d1be759d 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1066,6 +1066,22 @@ "test/core/iomgr/workqueue_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc++", + "grpc++_test_util", + "grpc_test_util" + ], + "headers": [], + "language": "c++", + "name": "alarm_test", + "src": [ + "test/cpp/common/alarm_test.cc" + ] + }, { "deps": [ "gpr", @@ -13202,6 +13218,7 @@ "grpc" ], "headers": [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", @@ -13255,6 +13272,7 @@ "language": "c++", "name": "grpc++", "src": [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", @@ -13308,6 +13326,7 @@ "src/cpp/client/secure_channel_arguments.cc", "src/cpp/client/secure_credentials.cc", "src/cpp/client/secure_credentials.h", + "src/cpp/common/alarm.cc", "src/cpp/common/auth_property_iterator.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", @@ -13386,6 +13405,7 @@ "grpc_unsecure" ], "headers": [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", @@ -13436,6 +13456,7 @@ "language": "c++", "name": "grpc++_unsecure", "src": [ + "include/grpc++/alarm.h", "include/grpc++/channel.h", "include/grpc++/client_context.h", "include/grpc++/completion_queue.h", @@ -13486,6 +13507,7 @@ "src/cpp/client/credentials.cc", "src/cpp/client/generic_stub.cc", "src/cpp/client/insecure_credentials.cc", + "src/cpp/common/alarm.cc", "src/cpp/common/call.cc", "src/cpp/common/completion_queue.cc", "src/cpp/common/create_auth_context.h", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 0396cf4e2f5..08f2f670092 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1217,6 +1217,24 @@ "posix" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c++", + "name": "alarm_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj index 74b0fbf2be4..3484d4bdc39 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -237,6 +237,7 @@ + @@ -305,6 +306,8 @@ + + diff --git a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index 96effe29619..39261b31910 100644 --- a/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -28,6 +28,9 @@ src\cpp\client + + src\cpp\common + src\cpp\common @@ -84,6 +87,9 @@ + + include\grpc++ + include\grpc++ diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj index 9f88c728c6f..da8c51c5a7e 100644 --- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj +++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj @@ -237,6 +237,7 @@ + @@ -318,6 +319,8 @@ + + diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters index 7d9cd4769dc..f9a03cba852 100644 --- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters +++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters @@ -43,6 +43,9 @@ src\cpp\client + + src\cpp\common + src\cpp\common @@ -99,6 +102,9 @@ + + include\grpc++ + include\grpc++ diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj index 74b0fbf2be4..3484d4bdc39 100644 --- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj @@ -237,6 +237,7 @@ + @@ -305,6 +306,8 @@ + + diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters index 96effe29619..39261b31910 100644 --- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters @@ -28,6 +28,9 @@ src\cpp\client + + src\cpp\common + src\cpp\common @@ -84,6 +87,9 @@ + + include\grpc++ + include\grpc++ diff --git a/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj b/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj new file mode 100644 index 00000000000..d7afec68eab --- /dev/null +++ b/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj @@ -0,0 +1,192 @@ + + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {AFD362D7-0E2A-E700-1F27-9D90F76166DF} + + + + v100 + + + v110 + + + v120 + + + Application + true + Unicode + + + Application + false + true + Unicode + + + + + + + + + + + + + + + + alarm_test + static + Debug + Debug + + + alarm_test + static + Debug + Debug + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + true + MultiThreadedDebug + true + None + + + Console + true + false + + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreadedDebug + true + None + + + Console + true + false + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + true + MultiThreaded + true + None + + + Console + true + false + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + MultiThreaded + true + None + + + Console + true + false + true + true + + + + + + + + + {0BE77741-552A-929B-A497-4EF7ECE17A64} + + + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + + + {C187A093-A0FE-489D-A40A-6E33DE0F9FEB} + + + {29D16885-7228-4C31-81ED-5F9187C7F2A9} + + + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + + + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + + + + + + + + + + + + + + + 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}. + + + + + + + + + diff --git a/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj.filters b/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj.filters new file mode 100644 index 00000000000..d9e2df67b66 --- /dev/null +++ b/vsprojects/vcxproj/test/alarm_test/alarm_test.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + test\cpp\common + + + + + + {ce8dc749-635b-4486-70d6-6bdf52297d09} + + + {444fc2e0-ba0f-d8e7-5e6b-de310914a938} + + + {e6ae3033-66a3-63ec-ac33-33a3b296ba63} + + + + From 504ed5997a09006a525af921f2969a096bfd3f44 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 07:38:43 -0700 Subject: [PATCH 009/111] Get basic profiler working again --- BUILD | 2 + Makefile | 1 + build.yaml | 1 + gRPC.podspec | 1 + grpc.gyp | 1 + src/core/profiling/basic_timers.c | 39 +++-- src/core/profiling/timers.h | 2 +- src/core/support/time_posix.c | 2 +- src/core/support/time_precise.c | 89 ++++++++++ src/core/support/time_precise.h | 55 +----- tools/doxygen/Doxyfile.core.internal | 1 + tools/profile_analyzer/profile_analyzer.py | 190 +-------------------- tools/run_tests/sources_and_headers.json | 1 + vsprojects/vcxproj/gpr/gpr.vcxproj | 2 + vsprojects/vcxproj/gpr/gpr.vcxproj.filters | 3 + 15 files changed, 138 insertions(+), 252 deletions(-) create mode 100644 src/core/support/time_precise.c diff --git a/BUILD b/BUILD index 3e2a45b8a0a..7c01d6b0bbc 100644 --- a/BUILD +++ b/BUILD @@ -88,6 +88,7 @@ cc_library( "src/core/support/thd_win32.c", "src/core/support/time.c", "src/core/support/time_posix.c", + "src/core/support/time_precise.c", "src/core/support/time_win32.c", "src/core/support/tls_pthread.c", ], @@ -995,6 +996,7 @@ objc_library( "src/core/support/thd_win32.c", "src/core/support/time.c", "src/core/support/time_posix.c", + "src/core/support/time_precise.c", "src/core/support/time_win32.c", "src/core/support/tls_pthread.c", ], diff --git a/Makefile b/Makefile index 8eb94f768a2..6d6dc71acce 100644 --- a/Makefile +++ b/Makefile @@ -3928,6 +3928,7 @@ LIBGPR_SRC = \ src/core/support/thd_win32.c \ src/core/support/time.c \ src/core/support/time_posix.c \ + src/core/support/time_precise.c \ src/core/support/time_win32.c \ src/core/support/tls_pthread.c \ diff --git a/build.yaml b/build.yaml index 98fb0348ca3..503d7a80c75 100644 --- a/build.yaml +++ b/build.yaml @@ -437,6 +437,7 @@ libs: - src/core/support/thd_win32.c - src/core/support/time.c - src/core/support/time_posix.c + - src/core/support/time_precise.c - src/core/support/time_win32.c - src/core/support/tls_pthread.c secure: false diff --git a/gRPC.podspec b/gRPC.podspec index 717e7005ee5..5b93281b417 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -134,6 +134,7 @@ Pod::Spec.new do |s| 'src/core/support/thd_win32.c', 'src/core/support/time.c', 'src/core/support/time_posix.c', + 'src/core/support/time_precise.c', 'src/core/support/time_win32.c', 'src/core/support/tls_pthread.c', 'src/core/security/auth_filters.h', diff --git a/grpc.gyp b/grpc.gyp index 2225ca4e045..b684cfd9d33 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -124,6 +124,7 @@ 'src/core/support/thd_win32.c', 'src/core/support/time.c', 'src/core/support/time_posix.c', + 'src/core/support/time_precise.c', 'src/core/support/time_win32.c', 'src/core/support/tls_pthread.c', ], diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index 2f6c88daacf..b7614375b3c 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -53,31 +53,42 @@ typedef enum { typedef struct grpc_timer_entry { gpr_timespec tm; - int tag; const char *tagstr; marker_type type; - void *id; const char *file; int line; } grpc_timer_entry; #define MAX_COUNT (1024 * 1024 / sizeof(grpc_timer_entry)) -static __thread grpc_timer_entry log[MAX_COUNT]; -static __thread int count; +static __thread grpc_timer_entry g_log[MAX_COUNT]; +static __thread int g_count; +static gpr_once g_once_init = GPR_ONCE_INIT; +static FILE *output_file; + +static void close_output() { fclose(output_file); } + +static void init_output() { + output_file = fopen("latency_trace.txt", "w"); + GPR_ASSERT(output_file); + atexit(close_output); +} static void log_report() { int i; - for (i = 0; i < count; i++) { - grpc_timer_entry *entry = &(log[i]); - printf("GRPC_LAT_PROF %ld.%09d %p %c %d(%s) %p %s %d\n", entry->tm.tv_sec, - entry->tm.tv_nsec, (void *)(gpr_intptr)gpr_thd_currentid(), - entry->type, entry->tag, entry->tagstr, entry->id, entry->file, - entry->line); + gpr_once_init(&g_once_init, init_output); + for (i = 0; i < g_count; i++) { + grpc_timer_entry *entry = &(g_log[i]); + fprintf(output_file, + "{\"t\": %ld.%09d, \"thd\": \"%p\", \"type\": \"%c\", \"tag\": " + "\"%s\", \"file\": \"%s\", \"line\": %d}\n", + entry->tm.tv_sec, entry->tm.tv_nsec, + (void *)(gpr_intptr)gpr_thd_currentid(), entry->type, entry->tagstr, + entry->file, entry->line); } /* Now clear out the log */ - count = 0; + g_count = 0; } static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, @@ -85,17 +96,15 @@ static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, grpc_timer_entry *entry; /* TODO (vpai) : Improve concurrency */ - if (count == MAX_COUNT) { + if (g_count == MAX_COUNT) { log_report(); } - entry = &log[count++]; + entry = &g_log[g_count++]; entry->tm = gpr_now(GPR_CLOCK_PRECISE); - entry->tag = tag; entry->tagstr = tagstr; entry->type = type; - entry->id = id; entry->file = file; entry->line = line; } diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index a70520408c3..c7cbf2bc2e4 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -65,7 +65,7 @@ enum grpc_profiling_tags { GRPC_PTAG_POLL_FINISHED = 203 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_TCP_CB_WRITE = 204 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_TCP_WRITE = 205 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_CALL_ON_DONE_RECV = 206 + GRPC_PTAG_IGNORE_THRESHOLD, + GRPC_PTAG_CALL_ON_DONE_RECV = 206, /* C++ */ GRPC_PTAG_CPP_CALL_CREATED = 300 + GRPC_PTAG_IGNORE_THRESHOLD, diff --git a/src/core/support/time_posix.c b/src/core/support/time_posix.c index 78f2c2bb77a..320a0678c2a 100644 --- a/src/core/support/time_posix.c +++ b/src/core/support/time_posix.c @@ -63,7 +63,7 @@ static gpr_timespec gpr_from_timespec(struct timespec ts, /** maps gpr_clock_type --> clockid_t for clock_gettime */ static clockid_t clockid_for_gpr_clock[] = {CLOCK_MONOTONIC, CLOCK_REALTIME}; -void gpr_time_init(void) {} +void gpr_time_init(void) { gpr_precise_clock_init(); } gpr_timespec gpr_now(gpr_clock_type clock_type) { struct timespec now; diff --git a/src/core/support/time_precise.c b/src/core/support/time_precise.c new file mode 100644 index 00000000000..b37517e639e --- /dev/null +++ b/src/core/support/time_precise.c @@ -0,0 +1,89 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#ifdef GRPC_TIMERS_RDTSC +#if defined(__i386__) +static void gpr_get_cycle_counter(long long int *clk) { + long long int ret; + __asm__ volatile("rdtsc" : "=A"(ret)); + *clk = ret; +} + +// ---------------------------------------------------------------- +#elif defined(__x86_64__) || defined(__amd64__) +static void gpr_get_cycle_counter(long long int *clk) { + unsigned long long low, high; + __asm__ volatile("rdtsc" : "=a"(low), "=d"(high)); + *clk = (long long)(high << 32) | (long long)low; +} +#endif + +static double cycles_per_second = 0; +static long long int start_cycle; +void gpr_precise_clock_init(void) { + time_t start; + long long end_cycle; + gpr_log(GPR_DEBUG, "Calibrating timers"); + start = time(NULL); + while (time(NULL) == start) + ; + gpr_get_cycle_counter(&start_cycle); + while (time(NULL) <= start + 10) + ; + gpr_get_cycle_counter(&end_cycle); + cycles_per_second = (double)(end_cycle - start_cycle) / 10.0; + gpr_log(GPR_DEBUG, "... cycles_per_second = %f\n", cycles_per_second); +} + +void gpr_precise_clock_now(gpr_timespec *clk) { + long long int counter; + double secs; + gpr_get_cycle_counter(&counter); + secs = (double)(counter - start_cycle) / cycles_per_second; + clk->clock_type = GPR_CLOCK_PRECISE; + clk->tv_sec = (time_t)secs; + clk->tv_nsec = (int)(1e9 * (secs - (double)clk->tv_sec)); +} + +#else /* GRPC_TIMERS_RDTSC */ +void gpr_precise_clock_init(void) {} + +void gpr_precise_clock_now(gpr_timespec *clk) { + *clk = gpr_now(GPR_CLOCK_REALTIME); + clk->clock_type = GPR_CLOCK_PRECISE; +} +#endif /* GRPC_TIMERS_RDTSC */ diff --git a/src/core/support/time_precise.h b/src/core/support/time_precise.h index cd201faab95..80c5000123d 100644 --- a/src/core/support/time_precise.h +++ b/src/core/support/time_precise.h @@ -34,60 +34,9 @@ #ifndef GRPC_CORE_SUPPORT_TIME_PRECISE_H_ #define GRPC_CORE_SUPPORT_TIME_PRECISE_H_ -#include #include -#include -#ifdef GRPC_TIMERS_RDTSC -#if defined(__i386__) -static void gpr_get_cycle_counter(long long int *clk) { - long long int ret; - __asm__ volatile("rdtsc" : "=A"(ret)); - *clk = ret; -} - -// ---------------------------------------------------------------- -#elif defined(__x86_64__) || defined(__amd64__) -static void gpr_get_cycle_counter(long long int *clk) { - unsigned long long low, high; - __asm__ volatile("rdtsc" : "=a"(low), "=d"(high)); - *clk = (high << 32) | low; -} -#endif - -static gpr_once precise_clock_init = GPR_ONCE_INIT; -static long long cycles_per_second = 0; -static void gpr_precise_clock_init() { - time_t start = time(NULL); - gpr_precise_clock start_cycle; - gpr_precise_clock end_cycle; - while (time(NULL) == start) - ; - gpr_get_cycle_counter(&start_cycle); - while (time(NULL) == start + 1) - ; - gpr_get_cycle_counter(&end_cycle); - cycles_per_second = end_cycle - start_cycle; -} - -static double grpc_precise_clock_scaling_factor() { - gpr_once_init(&precise_clock_init, grpc_precise_clock_init); - return 1e6 / cycles_per_second; -} - -static void gpr_precise_clock_now(gpr_timespec *clk) { - long long int counter; - gpr_get_cycle_counter(&counter); - clk->clock = GPR_CLOCK_REALTIME; - clk->tv_sec = counter / cycles_per_second; - clk->tv_nsec = counter % cycles_per_second; -} - -#else /* GRPC_TIMERS_RDTSC */ -static void gpr_precise_clock_now(gpr_timespec *clk) { - *clk = gpr_now(GPR_CLOCK_REALTIME); - clk->clock_type = GPR_CLOCK_PRECISE; -} -#endif /* GRPC_TIMERS_RDTSC */ +void gpr_precise_clock_init(void); +void gpr_precise_clock_now(gpr_timespec *clk); #endif /* GRPC_CORE_SUPPORT_TIME_PRECISE_ */ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 5658a102d75..98d56f21eee 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -1112,6 +1112,7 @@ src/core/support/thd_posix.c \ src/core/support/thd_win32.c \ src/core/support/time.c \ src/core/support/time_posix.c \ +src/core/support/time_precise.c \ src/core/support/time_win32.c \ src/core/support/tls_pthread.c diff --git a/tools/profile_analyzer/profile_analyzer.py b/tools/profile_analyzer/profile_analyzer.py index e5e9a28a92d..074ceb8428d 100755 --- a/tools/profile_analyzer/profile_analyzer.py +++ b/tools/profile_analyzer/profile_analyzer.py @@ -1,188 +1,14 @@ #!/usr/bin/env python2.7 -# 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. - -""" -Read GRPC basic profiles, analyze the data. - -Usage: - bins/basicprof/qps_smoke_test > log - cat log | tools/profile_analyzer/profile_analyzer.py -""" - - +import json import collections -import itertools -import math -import re - -# Create a regex to parse output of the C core basic profiler, -# as defined in src/core/profiling/basic_timers.c. -_RE_LINE = re.compile(r'GRPC_LAT_PROF ' + - r'([0-9]+\.[0-9]+) 0x([0-9a-f]+) ([{}.!]) ([0-9]+) ' + - r'([^ ]+) ([^ ]+) ([0-9]+)') - -Entry = collections.namedtuple( - 'Entry', - ['time', 'thread', 'type', 'tag', 'id', 'file', 'line']) - - -class ImportantMark(object): - def __init__(self, entry, stack): - self._entry = entry - self._pre_stack = stack - self._post_stack = list() - self._n = len(stack) # we'll also compute times to that many closing }s - - @property - def entry(self): - return self._entry - - @property - def max_depth(self): - return self._n - def append_post_entry(self, post_entry): - if self._n > 0 and post_entry.thread == self._entry.thread: - self._post_stack.append(post_entry) - self._n -= 1 - - def get_deltas(self): - pre_and_post_stacks = itertools.chain(self._pre_stack, self._post_stack) - return collections.OrderedDict((stack_entry, - abs(self._entry.time - stack_entry.time)) - for stack_entry in pre_and_post_stacks) - - -def print_block_statistics(block_times): - print '{:<12s} {:>12s} {:>12s} {:>12s} {:>12s}'.format( - 'Block tag', '50th p.', '90th p.', '95th p.', '99th p.') - for tag, tag_times in sorted(block_times.iteritems()): - times = sorted(tag_times) - print '{:<12d}: {:>12.3f} {:>12.3f} {:>12.3f} {:>12.3f}'.format( - tag, percentile(times, 50), percentile(times, 90), - percentile(times, 95), percentile(times, 99)) - print - -def print_grouped_imark_statistics(group_key, imarks_group): - values = collections.OrderedDict() - for imark in imarks_group: - deltas = imark.get_deltas() - for relative_entry, time_delta_us in deltas.iteritems(): - key = '{tag} {type} ({file}:{line})'.format(**relative_entry._asdict()) - l = values.setdefault(key, list()) - l.append(time_delta_us) - - print group_key - print '{:<50s} {:>12s} {:>12s} {:>12s} {:>12s}'.format( - 'Relative mark', '50th p.', '90th p.', '95th p.', '99th p.') - for key, time_values in values.iteritems(): - time_values = sorted(time_values) - print '{:<50s}: {:>12.3f} {:>12.3f} {:>12.3f} {:>12.3f}'.format( - key, percentile(time_values, 50), percentile(time_values, 90), - percentile(time_values, 95), percentile(time_values, 99)) - print - -def percentile(vals, percent): - """ Calculates the interpolated percentile given a sorted sequence and a - percent (in the usual 0-100 range).""" - assert vals, "Empty input sequence." - percent /= 100.0 - k = (len(vals)-1) * percent - f = math.floor(k) - c = math.ceil(k) - if f == c: - return vals[int(k)] - # else, interpolate - d0 = vals[int(f)] * (c-k) - d1 = vals[int(c)] * (k-f) - return d0 + d1 - -def entries(f): +data = collections.defaultdict(list) +with open('latency_trace.txt') as f: for line in f: - m = _RE_LINE.match(line) - if not m: continue - yield Entry(time=float(m.group(1)), - thread=m.group(2), - type=m.group(3), - tag=int(m.group(4)), - id=m.group(5), - file=m.group(6), - line=m.group(7)) - -def main(f): - percentiles = (50, 90, 95, 99) - threads = collections.defaultdict(lambda: collections.defaultdict(list)) - times = collections.defaultdict(list) - important_marks = collections.defaultdict(list) - stack_depth = collections.defaultdict(int) - for entry in entries(f): - thread = threads[entry.thread] - if entry.type == '{': - thread[entry.tag].append(entry) - stack_depth[entry.thread] += 1 - if entry.type == '!': - # Save a snapshot of the current stack inside a new ImportantMark instance. - # Get all entries _for any tag in the thread_. - stack = [e for entries_for_tag in thread.itervalues() - for e in entries_for_tag] - imark_group_key = '{tag}/{thread}@{file}:{line}'.format(**entry._asdict()) - important_marks[imark_group_key].append(ImportantMark(entry, stack)) - elif entry.type == '}': - last = thread[entry.tag].pop() - times[entry.tag].append(entry.time - last.time) - # only access the last "depth" imarks for the tag. - depth = stack_depth[entry.thread] - for imarks_group in important_marks.itervalues(): - for imark in imarks_group[-depth:]: - # if at a '}' deeper than where the current "imark" was found, ignore. - if depth > imark.max_depth: continue - imark.append_post_entry(entry) - stack_depth[entry.thread] -= 1 - - print - print 'Block marks:' - print '============' - print_block_statistics(times) - - print - print 'Important marks:' - print '================' - for group_key, imarks_group in important_marks.iteritems(): - print_grouped_imark_statistics(group_key, imarks_group) + inf = json.loads(line) + thd = inf['thd'] + del inf['thd'] + data[thd].append(inf) +print data -if __name__ == '__main__': - # If invoked without arguments, read off sys.stdin. If one argument is given, - # take it as a file name and open it for reading. - import sys - f = sys.stdin - if len(sys.argv) == 2: - f = open(sys.argv[1], 'r') - main(f) diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 1ceff15a3be..f2237e0fef7 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12244,6 +12244,7 @@ "src/core/support/thd_win32.c", "src/core/support/time.c", "src/core/support/time_posix.c", + "src/core/support/time_precise.c", "src/core/support/time_precise.h", "src/core/support/time_win32.c", "src/core/support/tls_pthread.c" diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj index 479286fe97c..4c3b36abdc8 100644 --- a/vsprojects/vcxproj/gpr/gpr.vcxproj +++ b/vsprojects/vcxproj/gpr/gpr.vcxproj @@ -244,6 +244,8 @@ + + diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters index be5bb5162d3..69391b4f991 100644 --- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters +++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters @@ -106,6 +106,9 @@ src\core\support + + src\core\support + src\core\support From 1c4319a3eb5a9afac1df14836c0b7bd1114f296f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 08:43:37 -0700 Subject: [PATCH 010/111] Fixup mac build --- src/core/support/time_posix.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/support/time_posix.c b/src/core/support/time_posix.c index 320a0678c2a..02cfca85552 100644 --- a/src/core/support/time_posix.c +++ b/src/core/support/time_posix.c @@ -89,6 +89,7 @@ static uint64_t g_time_start; void gpr_time_init(void) { mach_timebase_info_data_t tb = {0, 1}; + gpr_precise_clock_init(); mach_timebase_info(&tb); g_time_scale = tb.numer; g_time_scale /= tb.denom; From 9bb016125139bb7cdf5d0ff71b3fd25d13b75134 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 08:43:48 -0700 Subject: [PATCH 011/111] Further work on new prof analyzer --- tools/profile_analyzer/profile_analyzer.py | 104 ++++++++++++++++++++- 1 file changed, 100 insertions(+), 4 deletions(-) diff --git a/tools/profile_analyzer/profile_analyzer.py b/tools/profile_analyzer/profile_analyzer.py index 074ceb8428d..8db0b68f89e 100755 --- a/tools/profile_analyzer/profile_analyzer.py +++ b/tools/profile_analyzer/profile_analyzer.py @@ -1,14 +1,110 @@ #!/usr/bin/env python2.7 import json import collections +import itertools + + +SELF_TIME = object() +TIME_FROM_SCOPE_START = object() +TIME_TO_SCOPE_END = object() +TIME_FROM_STACK_START = object() +TIME_TO_STACK_END = object() + + +class LineItem(object): + + def __init__(self, line, indent): + self.tag = line['tag'] + self.indent = indent + self.time_stamp = line['t'] + self.important = line['type'] == '!' + self.times = {} + + +class ScopeBuilder(object): + + def __init__(self, call_stack_builder, line): + self.call_stack_builder = call_stack_builder + self.indent = len(call_stack_builder.stk) + self.top_line = LineItem(line, self.indent) + call_stack_builder.lines.append(self.top_line) + self.first_child_pos = len(call_stack_builder.lines) + + def mark(self, line): + pass + + def finish(self, line): + assert line['tag'] == self.top_line.tag + final_time_stamp = line['t'] + assert SELF_TIME not in self.top_line.times + self.top_line.tims[SELF_TIME] = final_time_stamp - self.top_line.time_stamp + for line in self.call_stack_builder.lines[self.first_child_pos:]: + if TIME_FROM_SCOPE_START not in line.times: + line[TIME_FROM_SCOPE_START] = line.time_stamp - self.top_line.time_stamp + line[TIME_TO_SCOPE_END] = final_time_stamp - line.time_stamp + + +class CallStackBuilder(object): + + def __init__(self): + self.stk = [] + self.signature = '' + self.lines = [] + + def add(self, line): + line_type = line['type'] + self.signature = '%s%s%s' % (self.signature, line_type, line['tag']) + if line_type == '{': + self.stk.append(ScopeBuilder(self, line)) + return False + elif line_type == '}': + self.stk.pop().finish(line) + return not self.stk + elif line_type == '.' or line_type == '!': + self.stk[-1].mark(line, True) + return False + else: + raise Exception('Unknown line type: \'%s\'' % line_type) + + +class CallStack(object): + + def __init__(self, initial_call_stack_builder): + self.count = 1 + self.signature = initial_call_stack_builder.signature + self.lines = initial_call_stack_builder.lines + for line in lines: + for key, val in line.times.items(): + line.times[key] = [val] + + def add(self, call_stack_builder): + assert self.signature == call_stack_builder.signature + self.count += 1 + assert len(self.lines) == len(call_stack_builder.lines) + for lsum, line in itertools.izip(self.lines, call_stack_builder.lines): + assert lsum.tag == line.tag + assert lsum.times.keys() == line.times.keys() + for k, lst in lsum.times.iterkeys(): + lst.append(line.times[k]) + + +builder = collections.defaultdict(CallStackBuilder) +call_stacks = collections.defaultdict(CallStack) -data = collections.defaultdict(list) with open('latency_trace.txt') as f: for line in f: inf = json.loads(line) thd = inf['thd'] - del inf['thd'] - data[thd].append(inf) + cs = builder[thd] + if cs.add(inf): + if cs.signature in call_stacks: + call_stacks[cs.signature].add(cs) + else: + call_stacks[cs.signature] = CallStack(cs) + del builder[thd] -print data +call_stacks = sorted(call_stacks.values(), key=lambda cs: cs.count, reverse=True) +for cs in call_stacks: + print cs.signature + print cs.count From abf36b1539080cd6aac6cab876481211c2ab3afd Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Thu, 8 Oct 2015 10:05:32 -0700 Subject: [PATCH 012/111] backport part of #3543 shebang fix to release-0_11 branch --- tools/jenkins/run_jenkins.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/jenkins/run_jenkins.sh b/tools/jenkins/run_jenkins.sh index 0f15835ea88..01c25cbe15d 100755 --- a/tools/jenkins/run_jenkins.sh +++ b/tools/jenkins/run_jenkins.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash # Copyright 2015, Google Inc. # All rights reserved. # @@ -31,8 +31,6 @@ # This script is invoked by Jenkins and triggers a test run based on # env variable settings. # -# Bootstrap into bash -[ -z $1 ] && exec bash $0 bootstrapped # Setting up rvm environment BEFORE we set -ex. [[ -s /etc/profile.d/rvm.sh ]] && . /etc/profile.d/rvm.sh # To prevent cygwin bash complaining about empty lines ending with \r From ea1372ce7c4d9a8169c1d04a9bda985b57f32703 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Wed, 7 Oct 2015 13:42:10 -0700 Subject: [PATCH 013/111] php: update package.xml to prepare for 0.6.1 release --- src/php/ext/grpc/package.xml | 30 ++++++++++++++++++++---------- src/php/ext/grpc/php_grpc.c | 17 +++++++++++------ 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/php/ext/grpc/package.xml b/src/php/ext/grpc/package.xml index f41902f041e..921cfc6ae68 100644 --- a/src/php/ext/grpc/package.xml +++ b/src/php/ext/grpc/package.xml @@ -10,10 +10,10 @@ grpc-packages@google.com yes - 2015-09-24 - + 2015-10-07 + - 0.6.0 + 0.6.1 0.6.0 @@ -22,12 +22,7 @@ BSD -- support per message compression disable -- expose per-call host override option -- expose connectivity API -- expose channel target and call peer -- add user-agent -- update to wrap gRPC C core library beta version 0.11.0 +- fixed undefined constant fatal error when run with apache/nginx #2275 @@ -44,7 +39,7 @@ - + @@ -118,5 +113,20 @@ Update to wrap gRPC C Core version 0.10.0 - update to wrap gRPC C core library beta version 0.11.0 + + + 0.6.1 + 0.6.0 + + + beta + beta + + 2015-10-07 + BSD + +- fixed undefined constant fatal error when run with apache/nginx #2275 + + diff --git a/src/php/ext/grpc/php_grpc.c b/src/php/ext/grpc/php_grpc.c index 4ad78ea0a31..fcd94a63062 100644 --- a/src/php/ext/grpc/php_grpc.c +++ b/src/php/ext/grpc/php_grpc.c @@ -150,7 +150,7 @@ PHP_MINIT_FUNCTION(grpc) { CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_INVALID_ARGUMENT", GRPC_STATUS_INVALID_ARGUMENT, - CONST_CS | CONST_PERSISTENT); + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_DEADLINE_EXCEEDED", GRPC_STATUS_DEADLINE_EXCEEDED, CONST_CS | CONST_PERSISTENT); @@ -173,7 +173,8 @@ PHP_MINIT_FUNCTION(grpc) { CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("Grpc\\STATUS_OUT_OF_RANGE", GRPC_STATUS_OUT_OF_RANGE, + REGISTER_LONG_CONSTANT("Grpc\\STATUS_OUT_OF_RANGE", + GRPC_STATUS_OUT_OF_RANGE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNIMPLEMENTED", GRPC_STATUS_UNIMPLEMENTED, @@ -202,7 +203,8 @@ PHP_MINIT_FUNCTION(grpc) { GRPC_OP_RECV_INITIAL_METADATA, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_MESSAGE", - GRPC_OP_RECV_MESSAGE, CONST_CS | CONST_PERSISTENT); + GRPC_OP_RECV_MESSAGE, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\OP_RECV_STATUS_ON_CLIENT", GRPC_OP_RECV_STATUS_ON_CLIENT, CONST_CS | CONST_PERSISTENT); @@ -212,11 +214,14 @@ PHP_MINIT_FUNCTION(grpc) { /* Register connectivity state constants */ REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_IDLE", - GRPC_CHANNEL_IDLE, CONST_CS | CONST_PERSISTENT); + GRPC_CHANNEL_IDLE, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_CONNECTING", - GRPC_CHANNEL_CONNECTING, CONST_CS | CONST_PERSISTENT); + GRPC_CHANNEL_CONNECTING, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_READY", - GRPC_CHANNEL_READY, CONST_CS | CONST_PERSISTENT); + GRPC_CHANNEL_READY, + CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("Grpc\\CHANNEL_TRANSIENT_FAILURE", GRPC_CHANNEL_TRANSIENT_FAILURE, CONST_CS | CONST_PERSISTENT); From 687bef6cb0df50ce58274cb0f7f94540fe8e024e Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Thu, 8 Oct 2015 08:09:55 -0700 Subject: [PATCH 014/111] remove a few more linuxbrew references --- examples/php/README.md | 3 +-- src/objective-c/README.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/php/README.md b/examples/php/README.md index a4ee8e698b9..8fb060863a3 100644 --- a/examples/php/README.md +++ b/examples/php/README.md @@ -8,7 +8,7 @@ This requires PHP 5.5 or greater. INSTALL ------- - - On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. Run the following command to install gRPC. + - On Mac OS X, install [homebrew][]. Run the following command to install gRPC. ```sh $ curl -fsSL https://goo.gl/getgrpc | bash -s php @@ -59,7 +59,6 @@ TUTORIAL You can find a more detailed tutorial in [gRPC Basics: PHP][] [homebrew]:http://brew.sh -[linuxbrew]:https://github.com/Homebrew/linuxbrew#installation [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [Node]:https://github.com/grpc/grpc/tree/master/examples/node [gRPC Basics: PHP]:http://www.grpc.io/docs/tutorials/basic/php.html diff --git a/src/objective-c/README.md b/src/objective-c/README.md index 6c27657def0..1851657a000 100644 --- a/src/objective-c/README.md +++ b/src/objective-c/README.md @@ -17,7 +17,7 @@ services. ## Install protoc with the gRPC plugin -On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. +On Mac OS X, install [homebrew][]. Run the following command to install _protoc_ and the gRPC _protoc_ plugin: ```sh @@ -168,7 +168,6 @@ Objective-C Protobuf runtime library. [Protocol Buffers]:https://developers.google.com/protocol-buffers/ [homebrew]:http://brew.sh -[linuxbrew]:https://github.com/Homebrew/linuxbrew [gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install [example Podfile]:https://github.com/grpc/grpc/blob/master/src/objective-c/examples/Sample/Podfile [sample app]: https://github.com/grpc/grpc/tree/master/src/objective-c/examples/Sample From 86253ca1da5349488e7098fcb794a1bf26d88415 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 13:31:02 -0700 Subject: [PATCH 015/111] Latency traces --- src/core/iomgr/exec_ctx.c | 4 + src/core/iomgr/fd_posix.c | 2 + .../iomgr/pollset_multipoller_with_epoll.c | 7 +- src/core/iomgr/pollset_posix.c | 7 +- src/core/iomgr/tcp_posix.c | 4 +- src/core/profiling/basic_timers.c | 32 +-- src/core/profiling/timers.h | 59 ++--- src/core/surface/call.c | 7 + src/core/surface/completion_queue.c | 11 + src/core/transport/chttp2_transport.c | 4 + src/cpp/client/channel.cc | 3 - src/cpp/server/server.cc | 4 + test/cpp/qps/client_sync.cc | 7 + tools/profile_analyzer/profile_analyzer.py | 233 ++++++++++++------ 14 files changed, 259 insertions(+), 125 deletions(-) diff --git a/src/core/iomgr/exec_ctx.c b/src/core/iomgr/exec_ctx.c index f2914d376ef..10786b44c20 100644 --- a/src/core/iomgr/exec_ctx.c +++ b/src/core/iomgr/exec_ctx.c @@ -35,8 +35,11 @@ #include +#include "src/core/profiling/timers.h" + int grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { int did_something = 0; + GRPC_TIMER_BEGIN(GRPC_PTAG_EXEC_CTX_FLUSH, 0); while (!grpc_closure_list_empty(exec_ctx->closure_list)) { grpc_closure *c = exec_ctx->closure_list.head; exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL; @@ -47,6 +50,7 @@ int grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { c = next; } } + GRPC_TIMER_END(GRPC_PTAG_EXEC_CTX_FLUSH, 0); return did_something; } diff --git a/src/core/iomgr/fd_posix.c b/src/core/iomgr/fd_posix.c index b48b7f050aa..a9a58904d22 100644 --- a/src/core/iomgr/fd_posix.c +++ b/src/core/iomgr/fd_posix.c @@ -45,6 +45,8 @@ #include #include +#include "src/core/profiling/timers.h" + enum descriptor_state { NOT_READY = 0, READY = 1 diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index faf0a6362b4..c3feba3ccff 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -41,10 +41,11 @@ #include #include -#include "src/core/iomgr/fd_posix.h" -#include "src/core/support/block_annotate.h" #include #include +#include "src/core/iomgr/fd_posix.h" +#include "src/core/support/block_annotate.h" +#include "src/core/profiling/timers.h" typedef struct wakeup_fd_hdl { grpc_wakeup_fd wakeup_fd; @@ -182,9 +183,11 @@ static void multipoll_with_epoll_pollset_maybe_work_and_unlock( /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid even going into the blocking annotation if possible */ + GRPC_TIMER_BEGIN(GRPC_PTAG_POLL, 0); GRPC_SCHEDULING_START_BLOCKING_REGION; poll_rv = grpc_poll_function(pfds, 2, timeout_ms); GRPC_SCHEDULING_END_BLOCKING_REGION; + GRPC_TIMER_END(GRPC_PTAG_POLL, 0); if (poll_rv < 0) { if (errno != EINTR) { diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index b663780a02a..fceeb691924 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -195,6 +195,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, /* pollset->mu already held */ int added_worker = 0; int locked = 1; + GRPC_TIMER_BEGIN(GRPC_PTAG_POLLSET_WORK, 0); /* this must happen before we (potentially) drop pollset->mu */ worker->next = worker->prev = NULL; /* TODO(ctiller): pool these */ @@ -223,8 +224,10 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, added_worker = 1; gpr_tls_set(&g_current_thread_poller, (gpr_intptr)pollset); gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); + GRPC_TIMER_BEGIN(GRPC_PTAG_POLLSET_WORK, 0); pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker, deadline, now); + GRPC_TIMER_END(GRPC_PTAG_POLLSET_WORK, 0); locked = 0; gpr_tls_set(&g_current_thread_poller, 0); gpr_tls_set(&g_current_thread_worker, 0); @@ -261,6 +264,7 @@ done: gpr_mu_lock(&pollset->mu); } } + GRPC_TIMER_END(GRPC_PTAG_POLLSET_WORK, 0); } void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, @@ -492,10 +496,11 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx, even going into the blocking annotation if possible */ /* poll fd count (argument 2) is shortened by one if we have no events to poll on - such that it only includes the kicker */ + GRPC_TIMER_BEGIN(GRPC_PTAG_POLL, 0); GRPC_SCHEDULING_START_BLOCKING_REGION; r = grpc_poll_function(pfd, nfds, timeout); GRPC_SCHEDULING_END_BLOCKING_REGION; - GRPC_TIMER_MARK(GRPC_PTAG_POLL_FINISHED, r); + GRPC_TIMER_END(GRPC_PTAG_POLL, 0); if (fd) { grpc_fd_end_poll(exec_ctx, &fd_watcher, pfd[2].revents & POLLIN, diff --git a/src/core/iomgr/tcp_posix.c b/src/core/iomgr/tcp_posix.c index 4a57037a720..540ebd612c1 100644 --- a/src/core/iomgr/tcp_posix.c +++ b/src/core/iomgr/tcp_posix.c @@ -199,7 +199,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_RECVMSG, 0); + GRPC_TIMER_BEGIN(GRPC_PTAG_RECVMSG, 1); do { read_bytes = recvmsg(tcp->fd, &msg, 0); } while (read_bytes < 0 && errno == EINTR); @@ -316,7 +316,7 @@ static flush_result tcp_flush(grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_SENDMSG, 0); + GRPC_TIMER_BEGIN(GRPC_PTAG_SENDMSG, 1); do { /* TODO(klempner): Cork if this is a partial write */ sent_length = sendmsg(tcp->fd, &msg, SENDMSG_FLAGS); diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index b7614375b3c..944ed5f4786 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -47,16 +47,16 @@ typedef enum { BEGIN = '{', END = '}', - MARK = '.', - IMPORTANT = '!' + MARK = '.' } marker_type; typedef struct grpc_timer_entry { gpr_timespec tm; const char *tagstr; - marker_type type; const char *file; int line; + char type; + gpr_uint8 important; } grpc_timer_entry; #define MAX_COUNT (1024 * 1024 / sizeof(grpc_timer_entry)) @@ -81,10 +81,10 @@ static void log_report() { grpc_timer_entry *entry = &(g_log[i]); fprintf(output_file, "{\"t\": %ld.%09d, \"thd\": \"%p\", \"type\": \"%c\", \"tag\": " - "\"%s\", \"file\": \"%s\", \"line\": %d}\n", + "\"%s\", \"file\": \"%s\", \"line\": %d, \"imp\": %d}\n", entry->tm.tv_sec, entry->tm.tv_nsec, (void *)(gpr_intptr)gpr_thd_currentid(), entry->type, entry->tagstr, - entry->file, entry->line); + entry->file, entry->line, entry->important); } /* Now clear out the log */ @@ -92,7 +92,7 @@ static void log_report() { } static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, - void *id, const char *file, int line) { + int important, const char *file, int line) { grpc_timer_entry *entry; /* TODO (vpai) : Improve concurrency */ @@ -107,34 +107,28 @@ static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, entry->type = type; entry->file = file; entry->line = line; + entry->important = important != 0; } /* Latency profiler API implementation. */ -void grpc_timer_add_mark(int tag, const char *tagstr, void *id, +void grpc_timer_add_mark(int tag, const char *tagstr, int important, const char *file, int line) { if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, MARK, id, file, line); + grpc_timers_log_add(tag, tagstr, MARK, important, file, line); } } -void grpc_timer_add_important_mark(int tag, const char *tagstr, void *id, - const char *file, int line) { - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, IMPORTANT, id, file, line); - } -} - -void grpc_timer_begin(int tag, const char *tagstr, void *id, const char *file, +void grpc_timer_begin(int tag, const char *tagstr, int important, const char *file, int line) { if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, BEGIN, id, file, line); + grpc_timers_log_add(tag, tagstr, BEGIN, important, file, line); } } -void grpc_timer_end(int tag, const char *tagstr, void *id, const char *file, +void grpc_timer_end(int tag, const char *tagstr, int important, const char *file, int line) { if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, END, id, file, line); + grpc_timers_log_add(tag, tagstr, END, important, file, line); } } diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index c7cbf2bc2e4..326c1997c32 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -41,13 +41,11 @@ extern "C" { void grpc_timers_global_init(void); void grpc_timers_global_destroy(void); -void grpc_timer_add_mark(int tag, const char *tagstr, void *id, +void grpc_timer_add_mark(int tag, const char *tagstr, int important, const char *file, int line); -void grpc_timer_add_important_mark(int tag, const char *tagstr, void *id, - const char *file, int line); -void grpc_timer_begin(int tag, const char *tagstr, void *id, const char *file, +void grpc_timer_begin(int tag, const char *tagstr, int important, const char *file, int line); -void grpc_timer_end(int tag, const char *tagstr, void *id, const char *file, +void grpc_timer_end(int tag, const char *tagstr, int important, const char *file, int line); enum grpc_profiling_tags { @@ -60,21 +58,36 @@ enum grpc_profiling_tags { /* Re. sockets. */ GRPC_PTAG_HANDLE_READ = 200 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_SENDMSG = 201 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_RECVMSG = 202 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_POLL_FINISHED = 203 + GRPC_PTAG_IGNORE_THRESHOLD, + GRPC_PTAG_SENDMSG = 201, + GRPC_PTAG_RECVMSG = 202, + GRPC_PTAG_POLL = 203, GRPC_PTAG_TCP_CB_WRITE = 204 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_TCP_WRITE = 205 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_CALL_ON_DONE_RECV = 206, + GRPC_PTAG_BECOME_READABLE = 207, /* C++ */ GRPC_PTAG_CPP_CALL_CREATED = 300 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_CPP_PERFORM_OPS = 301 + GRPC_PTAG_IGNORE_THRESHOLD, + GRPC_PTAG_CLIENT_UNARY_CALL = 302, + GRPC_PTAG_SERVER_CALL = 303, + GRPC_PTAG_SERVER_CALLBACK = 304, /* Transports */ + GRPC_PTAG_HTTP2_RECV_DATA = 400, GRPC_PTAG_HTTP2_UNLOCK = 401 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_HTTP2_UNLOCK_CLEANUP = 402 + GRPC_PTAG_IGNORE_THRESHOLD, + /* Completion queue */ + GRPC_PTAG_CQ_NEXT = 501, + GRPC_PTAG_CQ_PLUCK = 502, + GRPC_PTAG_POLLSET_WORK = 503, + GRPC_PTAG_EXEC_CTX_FLUSH = 504, + + /* Surface */ + GRPC_PTAG_CALL_START_BATCH = 600, + GRPC_PTAG_CALL_ON_DONE_RECV = 601, + GRPC_PTAG_CALL_UNLOCK = 602, + /* > 1024 Unassigned reserved. For any miscellaneous use. * Use addition to generate tags from this base or take advantage of the 10 * zero'd bits for OR-ing. */ @@ -83,19 +96,15 @@ enum grpc_profiling_tags { #if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER)) /* No profiling. No-op all the things. */ -#define GRPC_TIMER_MARK(tag, id) \ +#define GRPC_TIMER_MARK(tag, important) \ do { \ } while (0) -#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \ - do { \ - } while (0) - -#define GRPC_TIMER_BEGIN(tag, id) \ +#define GRPC_TIMER_BEGIN(tag, important) \ do { \ } while (0) -#define GRPC_TIMER_END(tag, id) \ +#define GRPC_TIMER_END(tag, important) \ do { \ } while (0) @@ -106,27 +115,21 @@ enum grpc_profiling_tags { #endif /* Generic profiling interface. */ -#define GRPC_TIMER_MARK(tag, id) \ +#define GRPC_TIMER_MARK(tag, important) \ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_add_mark(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \ + grpc_timer_add_mark(tag, #tag, important, __FILE__, \ __LINE__); \ } -#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_add_important_mark(tag, #tag, ((void *)(gpr_intptr)(id)), \ - __FILE__, __LINE__); \ - } - -#define GRPC_TIMER_BEGIN(tag, id) \ +#define GRPC_TIMER_BEGIN(tag, important) \ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_begin(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \ + grpc_timer_begin(tag, #tag, important, __FILE__, \ __LINE__); \ } -#define GRPC_TIMER_END(tag, id) \ +#define GRPC_TIMER_END(tag, important) \ if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_end(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \ + grpc_timer_end(tag, #tag, important, __FILE__, __LINE__); \ } #ifdef GRPC_STAP_PROFILER diff --git a/src/core/surface/call.c b/src/core/surface/call.c index d15a3bcbade..90df15ab39b 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -607,6 +607,8 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { const size_t MAX_RECV_PEEK_AHEAD = 65536; size_t buffered_bytes; + GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_UNLOCK, 0); + memset(&op, 0, sizeof(op)); op.cancel_with_status = call->cancel_with_status; @@ -677,6 +679,8 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completing"); } + + GRPC_TIMER_END(GRPC_PTAG_CALL_UNLOCK, 0); } static void get_final_status(grpc_call *call, grpc_ioreq_data out) { @@ -1589,6 +1593,8 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, grpc_call_error error; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_START_BATCH, 0); + 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)); @@ -1826,6 +1832,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, finish_func, tag); done: grpc_exec_ctx_finish(&exec_ctx); + GRPC_TIMER_END(GRPC_PTAG_CALL_START_BATCH, 0); return error; } diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index e818ccba488..5ca8f837df4 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -42,6 +42,7 @@ #include "src/core/surface/call.h" #include "src/core/surface/event_string.h" #include "src/core/surface/surface_trace.h" +#include "src/core/profiling/timers.h" #include #include #include @@ -184,6 +185,8 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, gpr_timespec now; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_TIMER_BEGIN(GRPC_PTAG_CQ_NEXT, 0); + GRPC_API_TRACE( "grpc_completion_queue_next(" "cc=%p, " @@ -230,6 +233,9 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret); GRPC_CQ_INTERNAL_UNREF(cc, "next"); grpc_exec_ctx_finish(&exec_ctx); + + GRPC_TIMER_END(GRPC_PTAG_CQ_NEXT, 0); + return ret; } @@ -268,6 +274,8 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, int first_loop = 1; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_TIMER_BEGIN(GRPC_PTAG_CQ_PLUCK, 0); + GRPC_API_TRACE( "grpc_completion_queue_pluck(" "cc=%p, tag=%p, " @@ -333,6 +341,9 @@ done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret); GRPC_CQ_INTERNAL_UNREF(cc, "pluck"); grpc_exec_ctx_finish(&exec_ctx); + + GRPC_TIMER_END(GRPC_PTAG_CQ_PLUCK, 0); + return ret; } diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index de743795462..b4508b42bcd 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -1103,6 +1103,8 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { int keep_reading = 0; grpc_chttp2_transport *t = tp; + GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_RECV_DATA, 0); + lock(t); i = 0; GPR_ASSERT(!t->parsing_active); @@ -1154,6 +1156,8 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { } else { UNREF_TRANSPORT(exec_ctx, t, "recv_data"); } + + GRPC_TIMER_END(GRPC_PTAG_HTTP2_RECV_DATA, 0); } /* diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index dc8e3046648..c7974d655bf 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -78,7 +78,6 @@ Call Channel::CreateCall(const RpcMethod& method, ClientContext* context, context->raw_deadline(), nullptr); } grpc_census_call_set_context(c_call, context->census_context()); - GRPC_TIMER_MARK(GRPC_PTAG_CPP_CALL_CREATED, c_call); context->set_call(c_call, shared_from_this()); return Call(c_call, this, cq); } @@ -87,11 +86,9 @@ void Channel::PerformOpsOnCall(CallOpSetInterface* ops, Call* call) { static const size_t MAX_OPS = 8; size_t nops = 0; grpc_op cops[MAX_OPS]; - GRPC_TIMER_BEGIN(GRPC_PTAG_CPP_PERFORM_OPS, call->call()); ops->FillOps(cops, &nops); GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(call->call(), cops, nops, ops, nullptr)); - GRPC_TIMER_END(GRPC_PTAG_CPP_PERFORM_OPS, call->call()); } void* Channel::RegisterMethod(const char* method) { diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index a44e1d20250..f2719735062 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -541,6 +541,7 @@ void Server::ScheduleCallback() { void Server::RunRpc() { // Wait for one more incoming rpc. bool ok; + GRPC_TIMER_BEGIN(GRPC_PTAG_SERVER_CALL, 0); auto* mrd = SyncRequest::Wait(&cq_, &ok); if (mrd) { ScheduleCallback(); @@ -556,9 +557,12 @@ void Server::RunRpc() { mrd->TeardownRequest(); } } + GRPC_TIMER_BEGIN(GRPC_PTAG_SERVER_CALLBACK, 0); cd.Run(); + GRPC_TIMER_END(GRPC_PTAG_SERVER_CALLBACK, 0); } } + GRPC_TIMER_END(GRPC_PTAG_SERVER_CALL, 0); { grpc::unique_lock lock(mu_); diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc index beef6048567..0523371013d 100644 --- a/test/cpp/qps/client_sync.cc +++ b/test/cpp/qps/client_sync.cc @@ -59,6 +59,8 @@ #include "test/cpp/qps/interarrival.h" #include "test/cpp/qps/timer.h" +#include "src/core/profiling/timers.h" + namespace grpc { namespace testing { @@ -100,8 +102,10 @@ class SynchronousUnaryClient GRPC_FINAL : public SynchronousClient { auto* stub = channels_[thread_idx % channels_.size()].get_stub(); double start = Timer::Now(); grpc::ClientContext context; + GRPC_TIMER_BEGIN(GRPC_PTAG_CLIENT_UNARY_CALL, 0); grpc::Status s = stub->UnaryCall(&context, request_, &responses_[thread_idx]); + GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); histogram->Add((Timer::Now() - start) * 1e9); return s.ok(); } @@ -136,11 +140,14 @@ class SynchronousStreamingClient GRPC_FINAL : public SynchronousClient { bool ThreadFunc(Histogram* histogram, size_t thread_idx) GRPC_OVERRIDE { WaitToIssue(thread_idx); double start = Timer::Now(); + GRPC_TIMER_BEGIN(GRPC_PTAG_CLIENT_UNARY_CALL, 0); if (stream_[thread_idx]->Write(request_) && stream_[thread_idx]->Read(&responses_[thread_idx])) { + GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); histogram->Add((Timer::Now() - start) * 1e9); return true; } + GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); return false; } diff --git a/tools/profile_analyzer/profile_analyzer.py b/tools/profile_analyzer/profile_analyzer.py index 8db0b68f89e..259bbb08a31 100755 --- a/tools/profile_analyzer/profile_analyzer.py +++ b/tools/profile_analyzer/profile_analyzer.py @@ -1,7 +1,11 @@ #!/usr/bin/env python2.7 -import json import collections +import hashlib import itertools +import json +import math +import tabulate +import time SELF_TIME = object() @@ -13,98 +17,187 @@ TIME_TO_STACK_END = object() class LineItem(object): - def __init__(self, line, indent): - self.tag = line['tag'] - self.indent = indent - self.time_stamp = line['t'] - self.important = line['type'] == '!' - self.times = {} + def __init__(self, line, indent): + self.tag = line['tag'] + self.indent = indent + self.start_time = line['t'] + self.end_time = None + self.important = line['imp'] + self.times = {} class ScopeBuilder(object): - def __init__(self, call_stack_builder, line): - self.call_stack_builder = call_stack_builder - self.indent = len(call_stack_builder.stk) - self.top_line = LineItem(line, self.indent) - call_stack_builder.lines.append(self.top_line) - self.first_child_pos = len(call_stack_builder.lines) + def __init__(self, call_stack_builder, line): + self.call_stack_builder = call_stack_builder + self.indent = len(call_stack_builder.stk) + self.top_line = LineItem(line, self.indent) + call_stack_builder.lines.append(self.top_line) + self.first_child_pos = len(call_stack_builder.lines) - def mark(self, line): - pass + def mark(self, line): + line_item = LineItem(line, self.indent + 1) + line_item.end_time = line_item.start_time + self.call_stack_builder.lines.append(line_item) - def finish(self, line): - assert line['tag'] == self.top_line.tag - final_time_stamp = line['t'] - assert SELF_TIME not in self.top_line.times - self.top_line.tims[SELF_TIME] = final_time_stamp - self.top_line.time_stamp - for line in self.call_stack_builder.lines[self.first_child_pos:]: - if TIME_FROM_SCOPE_START not in line.times: - line[TIME_FROM_SCOPE_START] = line.time_stamp - self.top_line.time_stamp - line[TIME_TO_SCOPE_END] = final_time_stamp - line.time_stamp + + def finish(self, line): + assert line['tag'] == self.top_line.tag + final_time_stamp = line['t'] + assert self.top_line.end_time is None + self.top_line.end_time = final_time_stamp + assert SELF_TIME not in self.top_line.times + self.top_line.times[SELF_TIME] = final_time_stamp - self.top_line.start_time + for line in self.call_stack_builder.lines[self.first_child_pos:]: + if TIME_FROM_SCOPE_START not in line.times: + line.times[TIME_FROM_SCOPE_START] = line.start_time - self.top_line.start_time + line.times[TIME_TO_SCOPE_END] = final_time_stamp - line.end_time class CallStackBuilder(object): - - def __init__(self): - self.stk = [] - self.signature = '' - self.lines = [] - - def add(self, line): - line_type = line['type'] - self.signature = '%s%s%s' % (self.signature, line_type, line['tag']) - if line_type == '{': - self.stk.append(ScopeBuilder(self, line)) - return False - elif line_type == '}': - self.stk.pop().finish(line) - return not self.stk - elif line_type == '.' or line_type == '!': - self.stk[-1].mark(line, True) - return False - else: - raise Exception('Unknown line type: \'%s\'' % line_type) + def __init__(self): + self.stk = [] + self.signature = hashlib.md5() + self.lines = [] + + def finish(self): + start_time = self.lines[0].start_time + end_time = self.lines[0].end_time + self.signature = self.signature.hexdigest() + for line in self.lines: + line.times[TIME_FROM_STACK_START] = line.start_time - start_time + line.times[TIME_TO_STACK_END] = end_time - line.end_time + + def add(self, line): + line_type = line['type'] + self.signature.update(line_type) + self.signature.update(line['tag']) + if line_type == '{': + self.stk.append(ScopeBuilder(self, line)) + return False + elif line_type == '}': + self.stk.pop().finish(line) + if not self.stk: + self.finish() + return True + return False + elif line_type == '.' or line_type == '!': + self.stk[-1].mark(line) + return False + else: + raise Exception('Unknown line type: \'%s\'' % line_type) -class CallStack(object): - def __init__(self, initial_call_stack_builder): - self.count = 1 - self.signature = initial_call_stack_builder.signature - self.lines = initial_call_stack_builder.lines - for line in lines: - for key, val in line.times.items(): - line.times[key] = [val] - - def add(self, call_stack_builder): - assert self.signature == call_stack_builder.signature - self.count += 1 - assert len(self.lines) == len(call_stack_builder.lines) - for lsum, line in itertools.izip(self.lines, call_stack_builder.lines): - assert lsum.tag == line.tag - assert lsum.times.keys() == line.times.keys() - for k, lst in lsum.times.iterkeys(): - lst.append(line.times[k]) +class CallStack(object): + def __init__(self, initial_call_stack_builder): + self.count = 1 + self.signature = initial_call_stack_builder.signature + self.lines = initial_call_stack_builder.lines + for line in self.lines: + for key, val in line.times.items(): + line.times[key] = [val] + + def add(self, call_stack_builder): + assert self.signature == call_stack_builder.signature + self.count += 1 + assert len(self.lines) == len(call_stack_builder.lines) + for lsum, line in itertools.izip(self.lines, call_stack_builder.lines): + assert lsum.tag == line.tag + assert lsum.times.keys() == line.times.keys() + for k, lst in lsum.times.iteritems(): + lst.append(line.times[k]) + + def finish(self): + for line in self.lines: + for lst in line.times.itervalues(): + lst.sort() builder = collections.defaultdict(CallStackBuilder) call_stacks = collections.defaultdict(CallStack) +print 'Loading...' +lines = 0 +start = time.time() with open('latency_trace.txt') as f: for line in f: + lines += 1 inf = json.loads(line) thd = inf['thd'] cs = builder[thd] if cs.add(inf): - if cs.signature in call_stacks: - call_stacks[cs.signature].add(cs) - else: - call_stacks[cs.signature] = CallStack(cs) - del builder[thd] - + if cs.signature in call_stacks: + call_stacks[cs.signature].add(cs) + else: + call_stacks[cs.signature] = CallStack(cs) + del builder[thd] +time_taken = time.time() - start +print 'Read %d lines in %f seconds (%f lines/sec)' % (lines, time_taken, lines / time_taken) + +print 'Analyzing...' call_stacks = sorted(call_stacks.values(), key=lambda cs: cs.count, reverse=True) +for cs in call_stacks: + cs.finish() + +print 'Writing report...' +def percentile(N, percent, key=lambda x:x): + """ + Find the percentile of a list of values. + + @parameter N - is a list of values. Note N MUST BE already sorted. + @parameter percent - a float value from 0.0 to 1.0. + @parameter key - optional key function to compute value from each element of N. + + @return - the percentile of the values + """ + if not N: + return None + k = (len(N)-1) * percent + f = math.floor(k) + c = math.ceil(k) + if f == c: + return key(N[int(k)]) + d0 = key(N[int(f)]) * (c-k) + d1 = key(N[int(c)]) * (k-f) + return d0+d1 + +def tidy_tag(tag): + if tag[0:10] == 'GRPC_PTAG_': + return tag[10:] + return tag + +def time_string(values): + num_values = len(values) + return '%.1f/%.1f/%.1f' % ( + 1e6 * percentile(values, 0.5), + 1e6 * percentile(values, 0.9), + 1e6 * percentile(values, 0.99)) + +def time_format(idx): + def ent(line, idx=idx): + if idx in line.times: + return time_string(line.times[idx]) + return '' + return ent + +FORMAT = [ + ('TAG', lambda line: '..'*line.indent + tidy_tag(line.tag)), + ('FROM_STACK_START', time_format(TIME_FROM_STACK_START)), + ('SELF', time_format(SELF_TIME)), + ('TO_STACK_END', time_format(TIME_TO_STACK_END)), + ('FROM_SCOPE_START', time_format(TIME_FROM_SCOPE_START)), + ('SELF', time_format(SELF_TIME)), + ('TO_SCOPE_END', time_format(TIME_TO_SCOPE_END)), +] for cs in call_stacks: - print cs.signature - print cs.count + print cs.count + header, _ = zip(*FORMAT) + table = [] + for line in cs.lines: + fields = [] + for _, fn in FORMAT: + fields.append(fn(line)) + table.append(fields) + print tabulate.tabulate(table, header, tablefmt="simple") From 35505de42c3595bd2a8c2acad06f975c6f728b41 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 13:31:33 -0700 Subject: [PATCH 016/111] Retry timeouts on pull requests --- tools/run_tests/run_tests.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index e938520403d..6b7ee7eabe4 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -101,7 +101,8 @@ class SimpleConfig(object): timeout_seconds=self.timeout_seconds, hash_targets=hash_targets if self.allow_hashing else None, - flake_retries=5 if args.allow_flakes else 0) + flake_retries=5 if args.allow_flakes else 0, + timeout_retries=3 if args.allow_flakes else 0) # ValgrindConfig: compile with some CONFIG=config, but use valgrind to run @@ -121,7 +122,7 @@ class ValgrindConfig(object): shortname='valgrind %s' % cmdline[0], hash_targets=None, flake_retries=5 if args.allow_flakes else 0, - timeout_retries=2 if args.allow_flakes else 0) + timeout_retries=3 if args.allow_flakes else 0) def get_c_tests(travis, test_lang) : From 3ba678cca0fb6a0fc479e1f673f9f7131b0a1e1f Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Thu, 8 Oct 2015 13:38:53 -0700 Subject: [PATCH 017/111] Undo wrong protobuf submodule sha --- third_party/protobuf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/protobuf b/third_party/protobuf index 23408684b4d..8fce8933649 160000 --- a/third_party/protobuf +++ b/third_party/protobuf @@ -1 +1 @@ -Subproject commit 23408684b4d2bf1b25e14314413a14d542c18bc4 +Subproject commit 8fce8933649ce09c1661ff2b5b7f6eb79badd251 From dd25694733cbb82e7ce42efcedab2ff21bcf6477 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 14:42:47 -0700 Subject: [PATCH 018/111] Script to generate latency reports --- .gitignore | 3 +- .../latency_profile}/profile_analyzer.py | 40 +++++++++++++++---- .../latency_profile/run_latency_profile.sh | 29 ++++++++++++++ 3 files changed, 64 insertions(+), 8 deletions(-) rename tools/{profile_analyzer => profiling/latency_profile}/profile_analyzer.py (86%) create mode 100755 tools/profiling/latency_profile/run_latency_profile.sh diff --git a/.gitignore b/.gitignore index 18b42811b28..bfbc3934649 100644 --- a/.gitignore +++ b/.gitignore @@ -37,10 +37,11 @@ cache.mk # Temporary test reports report.xml +latency_trace.txt # port server log portlog.txt # gyp generated make files *-gyp.mk -out \ No newline at end of file +out diff --git a/tools/profile_analyzer/profile_analyzer.py b/tools/profiling/latency_profile/profile_analyzer.py similarity index 86% rename from tools/profile_analyzer/profile_analyzer.py rename to tools/profiling/latency_profile/profile_analyzer.py index 259bbb08a31..175b1859354 100755 --- a/tools/profile_analyzer/profile_analyzer.py +++ b/tools/profiling/latency_profile/profile_analyzer.py @@ -1,4 +1,5 @@ #!/usr/bin/env python2.7 +import argparse import collections import hashlib import itertools @@ -15,6 +16,11 @@ TIME_FROM_STACK_START = object() TIME_TO_STACK_END = object() +argp = argparse.ArgumentParser(description='Process output of basic_prof builds') +argp.add_argument('--source', default='latency_trace.txt', type=str) +argp.add_argument('--fmt', choices=tabulate.tabulate_formats, default='simple') +args = argp.parse_args() + class LineItem(object): def __init__(self, line, indent): @@ -117,10 +123,9 @@ class CallStack(object): builder = collections.defaultdict(CallStackBuilder) call_stacks = collections.defaultdict(CallStack) -print 'Loading...' lines = 0 start = time.time() -with open('latency_trace.txt') as f: +with open(args.source) as f: for line in f: lines += 1 inf = json.loads(line) @@ -133,14 +138,13 @@ with open('latency_trace.txt') as f: call_stacks[cs.signature] = CallStack(cs) del builder[thd] time_taken = time.time() - start -print 'Read %d lines in %f seconds (%f lines/sec)' % (lines, time_taken, lines / time_taken) -print 'Analyzing...' call_stacks = sorted(call_stacks.values(), key=lambda cs: cs.count, reverse=True) +total_stacks = 0 for cs in call_stacks: + total_stacks += cs.count cs.finish() -print 'Writing report...' def percentile(N, percent, key=lambda x:x): """ Find the percentile of a list of values. @@ -191,8 +195,23 @@ FORMAT = [ ('TO_SCOPE_END', time_format(TIME_TO_SCOPE_END)), ] +BANNER = { + 'simple': 'Count: %(count)d', + 'html': '

Count: %(count)d

' +} + +if args.fmt == 'html': + print '' + print '' + print 'Profile Report' + print '' + +accounted_for = 0 for cs in call_stacks: - print cs.count + if args.fmt in BANNER: + print BANNER[args.fmt] % { + 'count': cs.count, + } header, _ = zip(*FORMAT) table = [] for line in cs.lines: @@ -200,4 +219,11 @@ for cs in call_stacks: for _, fn in FORMAT: fields.append(fn(line)) table.append(fields) - print tabulate.tabulate(table, header, tablefmt="simple") + print tabulate.tabulate(table, header, tablefmt=args.fmt) + accounted_for += cs.count + if accounted_for > .99 * total_stacks: + break + +if args.fmt == 'html': + print '' + diff --git a/tools/profiling/latency_profile/run_latency_profile.sh b/tools/profiling/latency_profile/run_latency_profile.sh new file mode 100755 index 00000000000..41686be5606 --- /dev/null +++ b/tools/profiling/latency_profile/run_latency_profile.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -ex + +cd $(dirname $0)/../../.. + +BINS="sync_unary_ping_pong_test sync_streaming_ping_pong_test" +CPUS=`python -c 'import multiprocessing; print multiprocessing.cpu_count()'` + +make CONFIG=basicprof -j$CPUS $BINS + +mkdir -p reports + +echo '' > reports/index.html +for bin in $BINS +do + bins/basicprof/$bin + mv latency_trace.txt $bin.trace + echo "$bin
" >> reports/index.html +done +for bin in $BINS +do + tools/profiling/latency_profile/profile_analyzer.py \ + --source=$bin.trace --fmt=simple > reports/$bin.txt & +done +echo '' >> reports/index.html + +wait + From f73b0066acbcb763859f02e044abbc942e0a3893 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 15:05:34 -0700 Subject: [PATCH 019/111] Remove unnecessary include --- src/core/iomgr/fd_posix.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/iomgr/fd_posix.c b/src/core/iomgr/fd_posix.c index d5ece4f4777..231bc988a87 100644 --- a/src/core/iomgr/fd_posix.c +++ b/src/core/iomgr/fd_posix.c @@ -45,8 +45,6 @@ #include #include -#include "src/core/profiling/timers.h" - #define CLOSURE_NOT_READY ((grpc_closure *)0) #define CLOSURE_READY ((grpc_closure *)1) From 8910ac6a363173b037a209debdc2b4528e9309f6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 8 Oct 2015 16:49:15 -0700 Subject: [PATCH 020/111] more markers --- src/core/channel/client_channel.c | 16 +++++++++++----- src/core/iomgr/exec_ctx.c | 4 +++- src/core/profiling/timers.h | 16 ++++++++++++++-- src/core/support/alloc.c | 14 ++++++++++++-- src/core/support/sync_posix.c | 13 +++++++++++-- src/core/surface/call.c | 2 ++ src/core/transport/chttp2_transport.c | 6 ++++++ 7 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index 8e7cb27cfd2..b3e10b02372 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -36,16 +36,18 @@ #include #include +#include +#include +#include +#include + #include "src/core/channel/channel_args.h" #include "src/core/channel/connected_channel.h" -#include "src/core/surface/channel.h" #include "src/core/iomgr/iomgr.h" +#include "src/core/profiling/timers.h" #include "src/core/support/string.h" +#include "src/core/surface/channel.h" #include "src/core/transport/connectivity_state.h" -#include -#include -#include -#include /* Client channel implementation */ @@ -235,6 +237,8 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, call_data *calld = arg; grpc_pollset *pollset; + GRPC_TIMER_BEGIN(GRPC_PTAG_CHANNEL_PICKED_TARGET, 0); + if (calld->picked_channel == NULL) { /* treat this like a cancellation */ calld->waiting_op.cancel_with_status = GRPC_STATUS_UNAVAILABLE; @@ -255,6 +259,8 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, &calld->async_setup_task); } } + + GRPC_TIMER_END(GRPC_PTAG_CHANNEL_PICKED_TARGET, 0); } static grpc_closure *merge_into_waiting_op(grpc_call_element *elem, diff --git a/src/core/iomgr/exec_ctx.c b/src/core/iomgr/exec_ctx.c index 10786b44c20..7e40c551721 100644 --- a/src/core/iomgr/exec_ctx.c +++ b/src/core/iomgr/exec_ctx.c @@ -45,8 +45,10 @@ int grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL; while (c != NULL) { grpc_closure *next = c->next; - did_something = 1; + did_something++; + GRPC_TIMER_BEGIN(GRPC_PTAG_EXEC_CTX_STEP, 0); c->cb(exec_ctx, c->cb_arg, c->success); + GRPC_TIMER_END(GRPC_PTAG_EXEC_CTX_STEP, 0); c = next; } } diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 326c1997c32..8305dac2cff 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -65,6 +65,12 @@ enum grpc_profiling_tags { GRPC_PTAG_TCP_WRITE = 205 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_BECOME_READABLE = 207, + GRPC_PTAG_MUTEX_LOCK = 250, + GRPC_PTAG_MUTEX_UNLOCK = 254, + GRPC_PTAG_MALLOC = 251, + GRPC_PTAG_REALLOC = 252, + GRPC_PTAG_FREE = 253, + /* C++ */ GRPC_PTAG_CPP_CALL_CREATED = 300 + GRPC_PTAG_IGNORE_THRESHOLD, GRPC_PTAG_CPP_PERFORM_OPS = 301 + GRPC_PTAG_IGNORE_THRESHOLD, @@ -74,19 +80,25 @@ enum grpc_profiling_tags { /* Transports */ GRPC_PTAG_HTTP2_RECV_DATA = 400, - GRPC_PTAG_HTTP2_UNLOCK = 401 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_HTTP2_UNLOCK_CLEANUP = 402 + GRPC_PTAG_IGNORE_THRESHOLD, + GRPC_PTAG_HTTP2_UNLOCK = 401, + GRPC_PTAG_HTTP2_WRITING_ACTION = 402, + GRPC_PTAG_HTTP2_TERMINATE_WRITING = 403, /* Completion queue */ GRPC_PTAG_CQ_NEXT = 501, GRPC_PTAG_CQ_PLUCK = 502, GRPC_PTAG_POLLSET_WORK = 503, GRPC_PTAG_EXEC_CTX_FLUSH = 504, + GRPC_PTAG_EXEC_CTX_STEP = 505, /* Surface */ GRPC_PTAG_CALL_START_BATCH = 600, GRPC_PTAG_CALL_ON_DONE_RECV = 601, GRPC_PTAG_CALL_UNLOCK = 602, + GRPC_PTAG_CALL_ON_DONE_SEND = 602, + + /* Channel */ + GRPC_PTAG_CHANNEL_PICKED_TARGET = 700, /* > 1024 Unassigned reserved. For any miscellaneous use. * Use addition to generate tags from this base or take advantage of the 10 diff --git a/src/core/support/alloc.c b/src/core/support/alloc.c index d2ed82e7717..5e17daafe2d 100644 --- a/src/core/support/alloc.c +++ b/src/core/support/alloc.c @@ -35,22 +35,32 @@ #include #include +#include "src/core/profiling/timers.h" void *gpr_malloc(size_t size) { - void *p = malloc(size); + void *p; + GRPC_TIMER_BEGIN(GRPC_PTAG_MALLOC, 0); + p = malloc(size); if (!p) { abort(); } + GRPC_TIMER_END(GRPC_PTAG_MALLOC, 0); return p; } -void gpr_free(void *p) { free(p); } +void gpr_free(void *p) { + GRPC_TIMER_BEGIN(GRPC_PTAG_FREE, 0); + free(p); + GRPC_TIMER_END(GRPC_PTAG_FREE, 0); +} void *gpr_realloc(void *p, size_t size) { + GRPC_TIMER_BEGIN(GRPC_PTAG_REALLOC, 0); p = realloc(p, size); if (!p) { abort(); } + GRPC_TIMER_END(GRPC_PTAG_REALLOC, 0); return p; } diff --git a/src/core/support/sync_posix.c b/src/core/support/sync_posix.c index 91c30989ce8..25a580c289d 100644 --- a/src/core/support/sync_posix.c +++ b/src/core/support/sync_posix.c @@ -40,14 +40,23 @@ #include #include #include +#include "src/core/profiling/timers.h" void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); } void gpr_mu_destroy(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_destroy(mu) == 0); } -void gpr_mu_lock(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_lock(mu) == 0); } +void gpr_mu_lock(gpr_mu* mu) { + GRPC_TIMER_BEGIN(GRPC_PTAG_MUTEX_LOCK, 0); + GPR_ASSERT(pthread_mutex_lock(mu) == 0); + GRPC_TIMER_END(GRPC_PTAG_MUTEX_LOCK, 0); +} -void gpr_mu_unlock(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_unlock(mu) == 0); } +void gpr_mu_unlock(gpr_mu* mu) { + GRPC_TIMER_BEGIN(GRPC_PTAG_MUTEX_UNLOCK, 0); + GPR_ASSERT(pthread_mutex_unlock(mu) == 0); + GRPC_TIMER_END(GRPC_PTAG_MUTEX_UNLOCK, 0); +} int gpr_mu_trylock(gpr_mu* mu) { int err = pthread_mutex_trylock(mu); diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 6747c8af561..9e2182952b6 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -836,6 +836,7 @@ static void early_out_write_ops(grpc_call *call) { static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { grpc_call *call = pc; + GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_ON_DONE_SEND, 0); lock(call); if (call->last_send_contains & (1 << GRPC_IOREQ_SEND_INITIAL_METADATA)) { finish_ioreq_op(call, GRPC_IOREQ_SEND_INITIAL_METADATA, success); @@ -859,6 +860,7 @@ static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { call->sending = 0; unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "sending"); + GRPC_TIMER_END(GRPC_PTAG_CALL_ON_DONE_SEND, 0); } static void finish_message(grpc_call *call) { diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index b4508b42bcd..0a1b3a8176b 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -546,6 +546,8 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_writing *transport_writing = transport_writing_ptr; grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing); + GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_TERMINATE_WRITING, 0); + lock(t); allow_endpoint_shutdown_locked(exec_ctx, t); @@ -567,12 +569,16 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, unlock(exec_ctx, t); UNREF_TRANSPORT(exec_ctx, t, "writing"); + + GRPC_TIMER_END(GRPC_PTAG_HTTP2_TERMINATE_WRITING, 0); } static void writing_action(grpc_exec_ctx *exec_ctx, void *gt, int iomgr_success_ignored) { grpc_chttp2_transport *t = gt; + GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_WRITING_ACTION, 0); grpc_chttp2_perform_writes(exec_ctx, &t->writing, t->ep); + GRPC_TIMER_END(GRPC_PTAG_HTTP2_WRITING_ACTION, 0); } void grpc_chttp2_add_incoming_goaway( From 32a145b73c6c0ba29780de6e6d95e0decf436acd Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 13:31:47 -0700 Subject: [PATCH 021/111] Moved grpc.gyp.template to binding.gyp.template --- templates/{grpc.gyp.template => binding.gyp.template} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{grpc.gyp.template => binding.gyp.template} (100%) diff --git a/templates/grpc.gyp.template b/templates/binding.gyp.template similarity index 100% rename from templates/grpc.gyp.template rename to templates/binding.gyp.template From fd994f11b86a7977e1e4656796da37aec950708d Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 14:02:28 -0700 Subject: [PATCH 022/111] Consolidated gyp files to fix Node installation issue --- binding.gyp | 232 +++++++++++++++++++++++++- grpc.gyp | 295 --------------------------------- package.json | 3 +- templates/binding.gyp.template | 112 ++++++++----- 4 files changed, 299 insertions(+), 343 deletions(-) delete mode 100644 grpc.gyp diff --git a/binding.gyp b/binding.gyp index 2a5cb1ced49..b775113f8fd 100644 --- a/binding.gyp +++ b/binding.gyp @@ -1,3 +1,10 @@ +# GRPC Node gyp file +# This currently builds the Node extension and dependencies +# This file has been automatically generated from a template file. +# Please look at the templates directory instead. +# This file can be regenerated from the template by running +# tools/buildgen/generate_projects.sh + # Copyright 2015, Google Inc. # All rights reserved. # @@ -26,11 +33,230 @@ # 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. + +# Some of this file is built with the help of +# https://n8.io/converting-a-c-library-to-gyp/ { - "variables" : { + 'variables': { 'config': '0. + # io.js always reports versions >0 and always exports ALPN symbols. + 'defines': [ + 'TSI_OPENSSL_ALPN_SUPPORT=/dev/null 2>&1 && echo 1 || echo 0)' - ], - 'include_dirs': [ - '.', - 'include' - ], - # TODO: Check for libraries with pkg-config - 'libraries': [ - '-lcrypto', - '-lssl', - '-ldl', - '-lpthread', - '-lz' - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '.', - 'include' - ], - } - }, - 'targets': [ - { - 'target_name': 'gpr', - 'product_prefix': 'lib', - 'type': 'static_library', - 'dependencies': [ - ], - 'sources': [ - 'src/core/support/alloc.c', - 'src/core/support/cmdline.c', - 'src/core/support/cpu_iphone.c', - 'src/core/support/cpu_linux.c', - 'src/core/support/cpu_posix.c', - 'src/core/support/cpu_windows.c', - 'src/core/support/env_linux.c', - 'src/core/support/env_posix.c', - 'src/core/support/env_win32.c', - 'src/core/support/file.c', - 'src/core/support/file_posix.c', - 'src/core/support/file_win32.c', - 'src/core/support/histogram.c', - 'src/core/support/host_port.c', - 'src/core/support/log.c', - 'src/core/support/log_android.c', - 'src/core/support/log_linux.c', - 'src/core/support/log_posix.c', - 'src/core/support/log_win32.c', - 'src/core/support/murmur_hash.c', - 'src/core/support/slice.c', - 'src/core/support/slice_buffer.c', - 'src/core/support/stack_lockfree.c', - 'src/core/support/string.c', - 'src/core/support/string_posix.c', - 'src/core/support/string_win32.c', - 'src/core/support/subprocess_posix.c', - 'src/core/support/sync.c', - 'src/core/support/sync_posix.c', - 'src/core/support/sync_win32.c', - 'src/core/support/thd.c', - 'src/core/support/thd_posix.c', - 'src/core/support/thd_win32.c', - 'src/core/support/time.c', - 'src/core/support/time_posix.c', - 'src/core/support/time_win32.c', - 'src/core/support/tls_pthread.c', - ], - }, - { - 'target_name': 'grpc', - 'product_prefix': 'lib', - 'type': 'static_library', - 'dependencies': [ - 'gpr', - ], - 'sources': [ - 'src/core/httpcli/httpcli_security_connector.c', - 'src/core/security/base64.c', - 'src/core/security/client_auth_filter.c', - 'src/core/security/credentials.c', - 'src/core/security/credentials_metadata.c', - 'src/core/security/credentials_posix.c', - 'src/core/security/credentials_win32.c', - 'src/core/security/google_default_credentials.c', - 'src/core/security/handshake.c', - 'src/core/security/json_token.c', - 'src/core/security/jwt_verifier.c', - 'src/core/security/secure_endpoint.c', - 'src/core/security/security_connector.c', - 'src/core/security/security_context.c', - 'src/core/security/server_auth_filter.c', - 'src/core/security/server_secure_chttp2.c', - 'src/core/surface/init_secure.c', - 'src/core/surface/secure_channel_create.c', - 'src/core/tsi/fake_transport_security.c', - 'src/core/tsi/ssl_transport_security.c', - 'src/core/tsi/transport_security.c', - 'src/core/census/grpc_context.c', - 'src/core/census/grpc_filter.c', - 'src/core/channel/channel_args.c', - 'src/core/channel/channel_stack.c', - 'src/core/channel/client_channel.c', - 'src/core/channel/compress_filter.c', - 'src/core/channel/connected_channel.c', - 'src/core/channel/http_client_filter.c', - 'src/core/channel/http_server_filter.c', - 'src/core/channel/noop_filter.c', - 'src/core/client_config/client_config.c', - 'src/core/client_config/connector.c', - 'src/core/client_config/lb_policies/pick_first.c', - 'src/core/client_config/lb_policies/round_robin.c', - 'src/core/client_config/lb_policy.c', - 'src/core/client_config/lb_policy_factory.c', - 'src/core/client_config/lb_policy_registry.c', - 'src/core/client_config/resolver.c', - 'src/core/client_config/resolver_factory.c', - 'src/core/client_config/resolver_registry.c', - 'src/core/client_config/resolvers/dns_resolver.c', - 'src/core/client_config/resolvers/sockaddr_resolver.c', - 'src/core/client_config/subchannel.c', - 'src/core/client_config/subchannel_factory.c', - 'src/core/client_config/subchannel_factory_decorators/add_channel_arg.c', - 'src/core/client_config/subchannel_factory_decorators/merge_channel_args.c', - 'src/core/client_config/uri_parser.c', - 'src/core/compression/algorithm.c', - 'src/core/compression/message_compress.c', - 'src/core/debug/trace.c', - 'src/core/httpcli/format_request.c', - 'src/core/httpcli/httpcli.c', - 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', - 'src/core/iomgr/closure.c', - 'src/core/iomgr/endpoint.c', - 'src/core/iomgr/endpoint_pair_posix.c', - 'src/core/iomgr/endpoint_pair_windows.c', - 'src/core/iomgr/exec_ctx.c', - 'src/core/iomgr/fd_posix.c', - 'src/core/iomgr/iocp_windows.c', - 'src/core/iomgr/iomgr.c', - 'src/core/iomgr/iomgr_posix.c', - 'src/core/iomgr/iomgr_windows.c', - 'src/core/iomgr/pollset_multipoller_with_epoll.c', - 'src/core/iomgr/pollset_multipoller_with_poll_posix.c', - 'src/core/iomgr/pollset_posix.c', - 'src/core/iomgr/pollset_set_posix.c', - 'src/core/iomgr/pollset_set_windows.c', - 'src/core/iomgr/pollset_windows.c', - 'src/core/iomgr/resolve_address_posix.c', - 'src/core/iomgr/resolve_address_windows.c', - 'src/core/iomgr/sockaddr_utils.c', - 'src/core/iomgr/socket_utils_common_posix.c', - 'src/core/iomgr/socket_utils_linux.c', - 'src/core/iomgr/socket_utils_posix.c', - 'src/core/iomgr/socket_windows.c', - 'src/core/iomgr/tcp_client_posix.c', - 'src/core/iomgr/tcp_client_windows.c', - 'src/core/iomgr/tcp_posix.c', - 'src/core/iomgr/tcp_server_posix.c', - 'src/core/iomgr/tcp_server_windows.c', - 'src/core/iomgr/tcp_windows.c', - 'src/core/iomgr/time_averaged_stats.c', - 'src/core/iomgr/udp_server.c', - 'src/core/iomgr/wakeup_fd_eventfd.c', - 'src/core/iomgr/wakeup_fd_nospecial.c', - 'src/core/iomgr/wakeup_fd_pipe.c', - 'src/core/iomgr/wakeup_fd_posix.c', - 'src/core/iomgr/workqueue_posix.c', - 'src/core/iomgr/workqueue_windows.c', - 'src/core/json/json.c', - 'src/core/json/json_reader.c', - 'src/core/json/json_string.c', - 'src/core/json/json_writer.c', - 'src/core/profiling/basic_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_queue.c', - 'src/core/surface/byte_buffer_reader.c', - 'src/core/surface/call.c', - 'src/core/surface/call_details.c', - 'src/core/surface/call_log_batch.c', - 'src/core/surface/channel.c', - 'src/core/surface/channel_connectivity.c', - 'src/core/surface/channel_create.c', - 'src/core/surface/completion_queue.c', - 'src/core/surface/event_string.c', - 'src/core/surface/init.c', - 'src/core/surface/lame_client.c', - 'src/core/surface/metadata_array.c', - 'src/core/surface/server.c', - 'src/core/surface/server_chttp2.c', - 'src/core/surface/server_create.c', - 'src/core/surface/version.c', - 'src/core/transport/chttp2/alpn.c', - 'src/core/transport/chttp2/bin_encoder.c', - 'src/core/transport/chttp2/frame_data.c', - 'src/core/transport/chttp2/frame_goaway.c', - 'src/core/transport/chttp2/frame_ping.c', - 'src/core/transport/chttp2/frame_rst_stream.c', - 'src/core/transport/chttp2/frame_settings.c', - 'src/core/transport/chttp2/frame_window_update.c', - 'src/core/transport/chttp2/hpack_parser.c', - 'src/core/transport/chttp2/hpack_table.c', - 'src/core/transport/chttp2/huffsyms.c', - 'src/core/transport/chttp2/incoming_metadata.c', - 'src/core/transport/chttp2/parsing.c', - 'src/core/transport/chttp2/status_conversion.c', - 'src/core/transport/chttp2/stream_encoder.c', - 'src/core/transport/chttp2/stream_lists.c', - 'src/core/transport/chttp2/stream_map.c', - 'src/core/transport/chttp2/timeout_encoding.c', - 'src/core/transport/chttp2/varint.c', - 'src/core/transport/chttp2/writing.c', - 'src/core/transport/chttp2_transport.c', - 'src/core/transport/connectivity_state.c', - 'src/core/transport/metadata.c', - 'src/core/transport/stream_op.c', - 'src/core/transport/transport.c', - 'src/core/transport/transport_op_string.c', - 'src/core/census/context.c', - 'src/core/census/initialize.c', - 'src/core/census/operation.c', - 'src/core/census/tracing.c', - ], - }, - ] -} diff --git a/package.json b/package.json index 0eea3475a34..c624c45107e 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lib": "src/node/src" }, "scripts": { - "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/examples src/node/interop src/node/index.js", + "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js", "test": "./node_modules/.bin/mocha src/node/test && npm run-script lint", "gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json", "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test" @@ -53,7 +53,6 @@ "src/core", "test/proto", "include", - "grpc.gyp", "binding.gyp" ], "main": "src/node/index.js", diff --git a/templates/binding.gyp.template b/templates/binding.gyp.template index 9a7637d8bf4..1e5b2ea9113 100644 --- a/templates/binding.gyp.template +++ b/templates/binding.gyp.template @@ -1,7 +1,7 @@ %YAML 1.2 --- | - # GRPC gyp file - # This currently builds C code. + # GRPC Node gyp file + # This currently builds the Node extension and dependencies # This file has been automatically generated from a template file. # Please look at the templates directory instead. # This file can be regenerated from the template by running @@ -39,54 +39,20 @@ # Some of this file is built with the help of # https://n8.io/converting-a-c-library-to-gyp/ { + 'variables': { + 'config': '0. + # io.js always reports versions >0 and always exports ALPN symbols. 'defines': [ - 'TSI_OPENSSL_ALPN_SUPPORT=/dev/null 2>&1 && echo 1 || echo 0)' + 'TSI_OPENSSL_ALPN_SUPPORT= Date: Fri, 9 Oct 2015 14:02:43 -0700 Subject: [PATCH 023/111] Fixed some issues with the Node tests --- src/node/src/credentials.js | 2 +- src/node/test/async_test.js | 2 +- src/node/test/channel_test.js | 2 +- src/node/test/credentials_test.js | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/node/src/credentials.js b/src/node/src/credentials.js index 009ff633067..ddc094f8968 100644 --- a/src/node/src/credentials.js +++ b/src/node/src/credentials.js @@ -153,7 +153,7 @@ exports.combineCallCredentials = function() { current = current.compose(arguments[i]); } return current; -} +}; /** * Create an insecure credentials object. This is used to create a channel that diff --git a/src/node/test/async_test.js b/src/node/test/async_test.js index ce3ce50a2d6..6d71ea24f54 100644 --- a/src/node/test/async_test.js +++ b/src/node/test/async_test.js @@ -57,7 +57,7 @@ describe('Async functionality', function() { grpc.ServerCredentials.createInsecure()); server.start(); math_client = new math.Math('localhost:' + port_num, - grpc.Credentials.createInsecure()); + grpc.credentials.createInsecure()); done(); }); after(function() { diff --git a/src/node/test/channel_test.js b/src/node/test/channel_test.js index b86f89b8a85..05269f7b6e4 100644 --- a/src/node/test/channel_test.js +++ b/src/node/test/channel_test.js @@ -149,7 +149,7 @@ describe('channel', function() { afterEach(function() { channel.close(); }); - it.only('should time out if called alone', function(done) { + it('should time out if called alone', function(done) { var old_state = channel.getConnectivityState(); var deadline = new Date(); deadline.setSeconds(deadline.getSeconds() + 1); diff --git a/src/node/test/credentials_test.js b/src/node/test/credentials_test.js index 8eb91ee69e6..7fc311a888d 100644 --- a/src/node/test/credentials_test.js +++ b/src/node/test/credentials_test.js @@ -130,8 +130,8 @@ describe('client credentials', function() { callback(null, metadata); }; var creds = grpc.credentials.createFromMetadataGenerator(metadataUpdater); - var combined_creds = grpc.credentials.combineCredentials(client_ssl_creds, - creds); + var combined_creds = grpc.credentials.combineChannelCredentials( + client_ssl_creds, creds); var client = new Client('localhost:' + port, combined_creds, client_options); var call = client.unary({}, function(err, data) { @@ -150,8 +150,8 @@ describe('client credentials', function() { callback(null, metadata); }; var creds = grpc.credentials.createFromMetadataGenerator(metadataUpdater); - var combined_creds = grpc.credentials.combineCredentials(client_ssl_creds, - creds); + var combined_creds = grpc.credentials.combineChannelCredentials( + client_ssl_creds, creds); var client = new Client('localhost:' + port, combined_creds, client_options); var call = client.unary({}, function(err, data) { @@ -231,7 +231,7 @@ describe('client credentials', function() { updater_creds, alt_updater_creds); var call = client.unary({}, function(err, data) { assert.ifError(err); - }, null, {credentials: updater_creds}); + }, null, {credentials: combined_updater}); call.on('metadata', function(metadata) { assert.deepEqual(metadata.get('plugin_key'), ['plugin_value']); assert.deepEqual(metadata.get('other_plugin_key'), From 15def98e344bfb220cb03f5cccc7c793f2ecd811 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 14:11:02 -0700 Subject: [PATCH 024/111] Expanded comment in binding.gyp --- binding.gyp | 4 ++++ templates/binding.gyp.template | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/binding.gyp b/binding.gyp index b775113f8fd..ed7fc757c93 100644 --- a/binding.gyp +++ b/binding.gyp @@ -44,6 +44,10 @@ 'target_defaults': { # Emperically, Node only exports ALPN symbols if its major version is >0. # io.js always reports versions >0 and always exports ALPN symbols. + # Therefore, Node's major version will be truthy if and only if it + # supports ALPN. The output of "node -v" is v[major].[minor].[patch], + # like "v4.1.1" in a recent version. We use grep to extract just the + # major version. "4", would be the output for the example. 'defines': [ 'TSI_OPENSSL_ALPN_SUPPORT=0. # io.js always reports versions >0 and always exports ALPN symbols. + # Therefore, Node's major version will be truthy if and only if it + # supports ALPN. The output of "node -v" is v[major].[minor].[patch], + # like "v4.1.1" in a recent version. We use grep to extract just the + # major version. "4", would be the output for the example. 'defines': [ 'TSI_OPENSSL_ALPN_SUPPORT= Date: Fri, 9 Oct 2015 15:07:02 -0700 Subject: [PATCH 025/111] Simplify adding annotations, annotate more things --- src/core/channel/client_channel.c | 7 +- src/core/channel/compress_filter.c | 5 + src/core/channel/connected_channel.c | 1 + src/core/channel/http_client_filter.c | 3 + src/core/channel/http_server_filter.c | 3 + .../client_config/lb_policies/pick_first.c | 5 +- src/core/iomgr/exec_ctx.c | 8 +- .../iomgr/pollset_multipoller_with_epoll.c | 4 +- src/core/iomgr/pollset_posix.c | 12 +- src/core/iomgr/tcp_posix.c | 22 ++-- src/core/profiling/basic_timers.c | 28 ++--- src/core/profiling/timers.h | 108 +++++------------- src/core/support/alloc.c | 16 +-- src/core/support/sync_posix.c | 16 +-- src/core/surface/call.c | 44 +++++-- src/core/surface/completion_queue.c | 8 +- src/core/transport/chttp2/parsing.c | 5 + src/core/transport/chttp2/writing.c | 5 + src/core/transport/chttp2_transport.c | 20 ++-- src/core/transport/stream_op.c | 6 + src/core/tsi/fake_transport_security.c | 2 +- src/cpp/proto/proto_utils.cc | 4 + src/cpp/server/server.cc | 6 +- test/cpp/qps/client_sync.cc | 7 +- .../latency_profile/profile_analyzer.py | 5 +- 25 files changed, 177 insertions(+), 173 deletions(-) diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index b3e10b02372..79c56580843 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -237,7 +237,7 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, call_data *calld = arg; grpc_pollset *pollset; - GRPC_TIMER_BEGIN(GRPC_PTAG_CHANNEL_PICKED_TARGET, 0); + GRPC_TIMER_BEGIN("picked_target", 0); if (calld->picked_channel == NULL) { /* treat this like a cancellation */ @@ -260,7 +260,7 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, } } - GRPC_TIMER_END(GRPC_PTAG_CHANNEL_PICKED_TARGET, 0); + GRPC_TIMER_END("picked_target", 0); } static grpc_closure *merge_into_waiting_op(grpc_call_element *elem, @@ -321,6 +321,7 @@ static void perform_transport_stream_op(grpc_exec_ctx *exec_ctx, grpc_subchannel_call *subchannel_call; grpc_lb_policy *lb_policy; grpc_transport_stream_op op2; + GRPC_TIMER_BEGIN("perform_transport_stream_op", 0); GPR_ASSERT(elem->filter == &grpc_client_channel_filter); GRPC_CALL_LOG_OP(GPR_INFO, elem, op); @@ -432,6 +433,8 @@ static void perform_transport_stream_op(grpc_exec_ctx *exec_ctx, } break; } + + GRPC_TIMER_END("perform_transport_stream_op", 0); } static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx, diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 182fbf18bfc..6c1ed2931fb 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -41,6 +41,7 @@ #include "src/core/channel/compress_filter.h" #include "src/core/channel/channel_args.h" +#include "src/core/profiling/timers.h" #include "src/core/compression/message_compress.h" #include "src/core/support/string.h" @@ -271,10 +272,14 @@ static void process_send_ops(grpc_call_element *elem, static void compress_start_transport_stream_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { + GRPC_TIMER_BEGIN("compress_start_transport_stream_op", 0); + if (op->send_ops && op->send_ops->nops > 0) { process_send_ops(elem, op->send_ops); } + GRPC_TIMER_END("compress_start_transport_stream_op", 0); + /* pass control down the stack */ grpc_call_next_op(exec_ctx, elem, op); } diff --git a/src/core/channel/connected_channel.c b/src/core/channel/connected_channel.c index f9fc2802596..6d4d7be6328 100644 --- a/src/core/channel/connected_channel.c +++ b/src/core/channel/connected_channel.c @@ -39,6 +39,7 @@ #include "src/core/support/string.h" #include "src/core/transport/transport.h" +#include "src/core/profiling/timers.h" #include #include #include diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c index d67dc37ad22..9a7f8c45be7 100644 --- a/src/core/channel/http_client_filter.c +++ b/src/core/channel/http_client_filter.c @@ -36,6 +36,7 @@ #include #include #include "src/core/support/string.h" +#include "src/core/profiling/timers.h" typedef struct call_data { grpc_linked_mdelem method; @@ -162,8 +163,10 @@ static void hc_mutate_op(grpc_call_element *elem, static void hc_start_transport_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { + GRPC_TIMER_BEGIN("hc_start_transport_op", 0); GRPC_CALL_LOG_OP(GPR_INFO, elem, op); hc_mutate_op(elem, op); + GRPC_TIMER_END("hc_start_transport_op", 0); grpc_call_next_op(exec_ctx, elem, op); } diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c index 5e6d684a528..16a0c1d3ac0 100644 --- a/src/core/channel/http_server_filter.c +++ b/src/core/channel/http_server_filter.c @@ -36,6 +36,7 @@ #include #include #include +#include "src/core/profiling/timers.h" typedef struct call_data { gpr_uint8 got_initial_metadata; @@ -230,8 +231,10 @@ static void hs_start_transport_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { GRPC_CALL_LOG_OP(GPR_INFO, elem, op); + GRPC_TIMER_BEGIN("hs_start_transport_op", 0); hs_mutate_op(elem, op); grpc_call_next_op(exec_ctx, elem, op); + GRPC_TIMER_END("hs_start_transport_op", 0); } /* Constructor for call_data */ diff --git a/src/core/client_config/lb_policies/pick_first.c b/src/core/client_config/lb_policies/pick_first.c index 4b3aaab09cc..e5bf0680ff0 100644 --- a/src/core/client_config/lb_policies/pick_first.c +++ b/src/core/client_config/lb_policies/pick_first.c @@ -175,7 +175,7 @@ void pf_pick(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, } } -static void destroy_subchannels(grpc_exec_ctx *exec_ctx, void *arg, +static void destroy_subchannels(grpc_exec_ctx *exec_ctx, void *arg, int iomgr_success) { pick_first_lb_policy *p = arg; size_t i; @@ -235,7 +235,8 @@ static void pf_connectivity_changed(grpc_exec_ctx *exec_ctx, void *arg, GRPC_SUBCHANNEL_REF(p->selected, "picked_first"); /* drop the pick list: we are connected now */ GRPC_LB_POLICY_REF(&p->base, "destroy_subchannels"); - grpc_exec_ctx_enqueue(exec_ctx, grpc_closure_create(destroy_subchannels, p), 1); + grpc_exec_ctx_enqueue(exec_ctx, + grpc_closure_create(destroy_subchannels, p), 1); /* update any calls that were waiting for a pick */ while ((pp = p->pending_picks)) { p->pending_picks = pp->next; diff --git a/src/core/iomgr/exec_ctx.c b/src/core/iomgr/exec_ctx.c index 7e40c551721..1ad39885e43 100644 --- a/src/core/iomgr/exec_ctx.c +++ b/src/core/iomgr/exec_ctx.c @@ -39,20 +39,20 @@ int grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { int did_something = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_EXEC_CTX_FLUSH, 0); + GRPC_TIMER_BEGIN("grpc_exec_ctx_flush", 0); while (!grpc_closure_list_empty(exec_ctx->closure_list)) { grpc_closure *c = exec_ctx->closure_list.head; exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL; while (c != NULL) { grpc_closure *next = c->next; did_something++; - GRPC_TIMER_BEGIN(GRPC_PTAG_EXEC_CTX_STEP, 0); + GRPC_TIMER_BEGIN("grpc_exec_ctx_flush.cb", 0); c->cb(exec_ctx, c->cb_arg, c->success); - GRPC_TIMER_END(GRPC_PTAG_EXEC_CTX_STEP, 0); + GRPC_TIMER_END("grpc_exec_ctx_flush.cb", 0); c = next; } } - GRPC_TIMER_END(GRPC_PTAG_EXEC_CTX_FLUSH, 0); + GRPC_TIMER_END("grpc_exec_ctx_flush", 0); return did_something; } diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index 1292d9caf49..e8743918951 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -183,11 +183,11 @@ static void multipoll_with_epoll_pollset_maybe_work_and_unlock( /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid even going into the blocking annotation if possible */ - GRPC_TIMER_BEGIN(GRPC_PTAG_POLL, 0); + GRPC_TIMER_BEGIN("poll", 0); GRPC_SCHEDULING_START_BLOCKING_REGION; poll_rv = grpc_poll_function(pfds, 2, timeout_ms); GRPC_SCHEDULING_END_BLOCKING_REGION; - GRPC_TIMER_END(GRPC_PTAG_POLL, 0); + GRPC_TIMER_END("poll", 0); if (poll_rv < 0) { if (errno != EINTR) { diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 0068b16468d..9fda8f8c0cc 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -229,7 +229,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, int locked = 1; int queued_work = 0; int keep_polling = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_POLLSET_WORK, 0); + GRPC_TIMER_BEGIN("grpc_pollset_work", 0); /* this must happen before we (potentially) drop pollset->mu */ worker->next = worker->prev = NULL; worker->reevaluate_polling_on_wakeup = 0; @@ -274,10 +274,10 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } gpr_tls_set(&g_current_thread_poller, (gpr_intptr)pollset); gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); - GRPC_TIMER_BEGIN(GRPC_PTAG_POLLSET_WORK, 0); + GRPC_TIMER_BEGIN("maybe_work_and_unlock", 0); pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker, deadline, now); - GRPC_TIMER_END(GRPC_PTAG_POLLSET_WORK, 0); + GRPC_TIMER_END("maybe_work_and_unlock", 0); locked = 0; gpr_tls_set(&g_current_thread_poller, 0); gpr_tls_set(&g_current_thread_worker, 0); @@ -332,7 +332,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_mu_lock(&pollset->mu); } } - GRPC_TIMER_END(GRPC_PTAG_POLLSET_WORK, 0); + GRPC_TIMER_END("grpc_pollset_work", 0); } void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, @@ -567,11 +567,11 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx, even going into the blocking annotation if possible */ /* poll fd count (argument 2) is shortened by one if we have no events to poll on - such that it only includes the kicker */ - GRPC_TIMER_BEGIN(GRPC_PTAG_POLL, 0); + GRPC_TIMER_BEGIN("poll", 0); GRPC_SCHEDULING_START_BLOCKING_REGION; r = grpc_poll_function(pfd, nfds, timeout); GRPC_SCHEDULING_END_BLOCKING_REGION; - GRPC_TIMER_END(GRPC_PTAG_POLL, 0); + GRPC_TIMER_END("poll", 0); if (r < 0) { gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno)); diff --git a/src/core/iomgr/tcp_posix.c b/src/core/iomgr/tcp_posix.c index 540ebd612c1..9e3773bcd44 100644 --- a/src/core/iomgr/tcp_posix.c +++ b/src/core/iomgr/tcp_posix.c @@ -180,7 +180,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { GPR_ASSERT(!tcp->finished_edge); GPR_ASSERT(tcp->iov_size <= MAX_READ_IOVEC); GPR_ASSERT(tcp->incoming_buffer->count <= MAX_READ_IOVEC); - GRPC_TIMER_BEGIN(GRPC_PTAG_HANDLE_READ, 0); + GRPC_TIMER_BEGIN("tcp_continue_read", 0); while (tcp->incoming_buffer->count < (size_t)tcp->iov_size) { gpr_slice_buffer_add_indexed(tcp->incoming_buffer, @@ -199,11 +199,11 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_RECVMSG, 1); + GRPC_TIMER_BEGIN("recvmsg", 1); do { read_bytes = recvmsg(tcp->fd, &msg, 0); } while (read_bytes < 0 && errno == EINTR); - GRPC_TIMER_END(GRPC_PTAG_RECVMSG, 0); + GRPC_TIMER_END("recvmsg", 0); if (read_bytes < 0) { /* NB: After calling call_read_cb a parallel call of the read handler may @@ -240,7 +240,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { TCP_UNREF(exec_ctx, tcp, "read"); } - GRPC_TIMER_END(GRPC_PTAG_HANDLE_READ, 0); + GRPC_TIMER_END("tcp_continue_read", 0); } static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, @@ -316,12 +316,12 @@ static flush_result tcp_flush(grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN(GRPC_PTAG_SENDMSG, 1); + GRPC_TIMER_BEGIN("sendmsg", 1); do { /* TODO(klempner): Cork if this is a partial write */ sent_length = sendmsg(tcp->fd, &msg, SENDMSG_FLAGS); } while (sent_length < 0 && errno == EINTR); - GRPC_TIMER_END(GRPC_PTAG_SENDMSG, 0); + GRPC_TIMER_END("sendmsg", 0); if (sent_length < 0) { if (errno == EAGAIN) { @@ -370,17 +370,17 @@ static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, return; } - GRPC_TIMER_BEGIN(GRPC_PTAG_TCP_CB_WRITE, 0); status = tcp_flush(tcp); if (status == FLUSH_PENDING) { grpc_fd_notify_on_write(exec_ctx, tcp->em_fd, &tcp->write_closure); } else { cb = tcp->write_cb; tcp->write_cb = NULL; + GRPC_TIMER_BEGIN("tcp_handle_write.cb", 0); cb->cb(exec_ctx, cb->cb_arg, status == FLUSH_DONE); + GRPC_TIMER_END("tcp_handle_write.cb", 0); TCP_UNREF(exec_ctx, tcp, "write"); } - GRPC_TIMER_END(GRPC_PTAG_TCP_CB_WRITE, 0); } static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, @@ -399,11 +399,11 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, } } - GRPC_TIMER_BEGIN(GRPC_PTAG_TCP_WRITE, 0); + GRPC_TIMER_BEGIN("tcp_write", 0); GPR_ASSERT(tcp->write_cb == NULL); if (buf->length == 0) { - GRPC_TIMER_END(GRPC_PTAG_TCP_WRITE, 0); + GRPC_TIMER_END("tcp_write", 0); grpc_exec_ctx_enqueue(exec_ctx, cb, 1); return; } @@ -420,7 +420,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, grpc_exec_ctx_enqueue(exec_ctx, cb, status == FLUSH_DONE); } - GRPC_TIMER_END(GRPC_PTAG_TCP_WRITE, 0); + GRPC_TIMER_END("tcp_write", 0); } static void tcp_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index 944ed5f4786..8a68277cca2 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -44,11 +44,7 @@ #include #include -typedef enum { - BEGIN = '{', - END = '}', - MARK = '.' -} marker_type; +typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type; typedef struct grpc_timer_entry { gpr_timespec tm; @@ -91,7 +87,7 @@ static void log_report() { g_count = 0; } -static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, +static void grpc_timers_log_add(const char *tagstr, marker_type type, int important, const char *file, int line) { grpc_timer_entry *entry; @@ -111,25 +107,19 @@ static void grpc_timers_log_add(int tag, const char *tagstr, marker_type type, } /* Latency profiler API implementation. */ -void grpc_timer_add_mark(int tag, const char *tagstr, int important, - const char *file, int line) { - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, MARK, important, file, line); - } +void grpc_timer_add_mark(const char *tagstr, int important, const char *file, + int line) { + grpc_timers_log_add(tagstr, MARK, important, file, line); } -void grpc_timer_begin(int tag, const char *tagstr, int important, const char *file, +void grpc_timer_begin(const char *tagstr, int important, const char *file, int line) { - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, BEGIN, important, file, line); - } + grpc_timers_log_add(tagstr, BEGIN, important, file, line); } -void grpc_timer_end(int tag, const char *tagstr, int important, const char *file, +void grpc_timer_end(const char *tagstr, int important, const char *file, int line) { - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { - grpc_timers_log_add(tag, tagstr, END, important, file, line); - } + grpc_timers_log_add(tagstr, END, important, file, line); } /* Basic profiler specific API functions. */ diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 8305dac2cff..94251fbcf54 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -41,83 +41,25 @@ extern "C" { void grpc_timers_global_init(void); void grpc_timers_global_destroy(void); -void grpc_timer_add_mark(int tag, const char *tagstr, int important, - const char *file, int line); -void grpc_timer_begin(int tag, const char *tagstr, int important, const char *file, +void grpc_timer_add_mark(const char *tagstr, int important, const char *file, + int line); +void grpc_timer_begin(const char *tagstr, int important, const char *file, int line); -void grpc_timer_end(int tag, const char *tagstr, int important, const char *file, +void grpc_timer_end(const char *tagstr, int important, const char *file, int line); -enum grpc_profiling_tags { - /* Any GRPC_PTAG_* >= than the threshold won't generate any profiling mark. */ - GRPC_PTAG_IGNORE_THRESHOLD = 1000000, - - /* Re. Protos. */ - GRPC_PTAG_PROTO_SERIALIZE = 100 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_PROTO_DESERIALIZE = 101 + GRPC_PTAG_IGNORE_THRESHOLD, - - /* Re. sockets. */ - GRPC_PTAG_HANDLE_READ = 200 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_SENDMSG = 201, - GRPC_PTAG_RECVMSG = 202, - GRPC_PTAG_POLL = 203, - GRPC_PTAG_TCP_CB_WRITE = 204 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_TCP_WRITE = 205 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_BECOME_READABLE = 207, - - GRPC_PTAG_MUTEX_LOCK = 250, - GRPC_PTAG_MUTEX_UNLOCK = 254, - GRPC_PTAG_MALLOC = 251, - GRPC_PTAG_REALLOC = 252, - GRPC_PTAG_FREE = 253, - - /* C++ */ - GRPC_PTAG_CPP_CALL_CREATED = 300 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_CPP_PERFORM_OPS = 301 + GRPC_PTAG_IGNORE_THRESHOLD, - GRPC_PTAG_CLIENT_UNARY_CALL = 302, - GRPC_PTAG_SERVER_CALL = 303, - GRPC_PTAG_SERVER_CALLBACK = 304, - - /* Transports */ - GRPC_PTAG_HTTP2_RECV_DATA = 400, - GRPC_PTAG_HTTP2_UNLOCK = 401, - GRPC_PTAG_HTTP2_WRITING_ACTION = 402, - GRPC_PTAG_HTTP2_TERMINATE_WRITING = 403, - - /* Completion queue */ - GRPC_PTAG_CQ_NEXT = 501, - GRPC_PTAG_CQ_PLUCK = 502, - GRPC_PTAG_POLLSET_WORK = 503, - GRPC_PTAG_EXEC_CTX_FLUSH = 504, - GRPC_PTAG_EXEC_CTX_STEP = 505, - - /* Surface */ - GRPC_PTAG_CALL_START_BATCH = 600, - GRPC_PTAG_CALL_ON_DONE_RECV = 601, - GRPC_PTAG_CALL_UNLOCK = 602, - GRPC_PTAG_CALL_ON_DONE_SEND = 602, - - /* Channel */ - GRPC_PTAG_CHANNEL_PICKED_TARGET = 700, - - /* > 1024 Unassigned reserved. For any miscellaneous use. - * Use addition to generate tags from this base or take advantage of the 10 - * zero'd bits for OR-ing. */ - GRPC_PTAG_OTHER_BASE = 1024 -}; - #if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER)) /* No profiling. No-op all the things. */ #define GRPC_TIMER_MARK(tag, important) \ - do { \ + do { \ } while (0) #define GRPC_TIMER_BEGIN(tag, important) \ - do { \ + do { \ } while (0) #define GRPC_TIMER_END(tag, important) \ - do { \ + do { \ } while (0) #else /* at least one profiler requested... */ @@ -127,22 +69,14 @@ enum grpc_profiling_tags { #endif /* Generic profiling interface. */ -#define GRPC_TIMER_MARK(tag, important) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_add_mark(tag, #tag, important, __FILE__, \ - __LINE__); \ - } +#define GRPC_TIMER_MARK(tag, important) \ + grpc_timer_add_mark(tag, important, __FILE__, __LINE__); -#define GRPC_TIMER_BEGIN(tag, important) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_begin(tag, #tag, important, __FILE__, \ - __LINE__); \ - } +#define GRPC_TIMER_BEGIN(tag, important) \ + grpc_timer_begin(tag, important, __FILE__, __LINE__); -#define GRPC_TIMER_END(tag, important) \ - if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \ - grpc_timer_end(tag, #tag, important, __FILE__, __LINE__); \ - } +#define GRPC_TIMER_END(tag, important) \ + grpc_timer_end(tag, important, __FILE__, __LINE__); #ifdef GRPC_STAP_PROFILER /* Empty placeholder for now. */ @@ -156,6 +90,22 @@ enum grpc_profiling_tags { #ifdef __cplusplus } + +namespace grpc { +class ProfileScope { + public: + ProfileScope(const char *desc, bool important) : desc_(desc) { + GRPC_TIMER_BEGIN(desc_, important ? 1 : 0); + } + ~ProfileScope() { GRPC_TIMER_END(desc_, 0); } + + private: + const char *const desc_; +}; +} + +#define GRPC_TIMER_SCOPE(tag, important) \ + ProfileScope _profile_scope_##__LINE__((tag), (important)) #endif #endif /* GRPC_CORE_PROFILING_TIMERS_H */ diff --git a/src/core/support/alloc.c b/src/core/support/alloc.c index 5e17daafe2d..beb0e780d0c 100644 --- a/src/core/support/alloc.c +++ b/src/core/support/alloc.c @@ -39,28 +39,28 @@ void *gpr_malloc(size_t size) { void *p; - GRPC_TIMER_BEGIN(GRPC_PTAG_MALLOC, 0); + GRPC_TIMER_BEGIN("gpr_malloc", 0); p = malloc(size); if (!p) { abort(); } - GRPC_TIMER_END(GRPC_PTAG_MALLOC, 0); + GRPC_TIMER_END("gpr_malloc", 0); return p; } -void gpr_free(void *p) { - GRPC_TIMER_BEGIN(GRPC_PTAG_FREE, 0); - free(p); - GRPC_TIMER_END(GRPC_PTAG_FREE, 0); +void gpr_free(void *p) { + GRPC_TIMER_BEGIN("gpr_free", 0); + free(p); + GRPC_TIMER_END("gpr_free", 0); } void *gpr_realloc(void *p, size_t size) { - GRPC_TIMER_BEGIN(GRPC_PTAG_REALLOC, 0); + GRPC_TIMER_BEGIN("gpr_realloc", 0); p = realloc(p, size); if (!p) { abort(); } - GRPC_TIMER_END(GRPC_PTAG_REALLOC, 0); + GRPC_TIMER_END("gpr_realloc", 0); return p; } diff --git a/src/core/support/sync_posix.c b/src/core/support/sync_posix.c index 25a580c289d..f356bec9846 100644 --- a/src/core/support/sync_posix.c +++ b/src/core/support/sync_posix.c @@ -46,16 +46,16 @@ void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); } void gpr_mu_destroy(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_destroy(mu) == 0); } -void gpr_mu_lock(gpr_mu* mu) { - GRPC_TIMER_BEGIN(GRPC_PTAG_MUTEX_LOCK, 0); - GPR_ASSERT(pthread_mutex_lock(mu) == 0); - GRPC_TIMER_END(GRPC_PTAG_MUTEX_LOCK, 0); +void gpr_mu_lock(gpr_mu* mu) { + GRPC_TIMER_BEGIN("gpr_mu_lock", 0); + GPR_ASSERT(pthread_mutex_lock(mu) == 0); + GRPC_TIMER_END("gpr_mu_lock", 0); } -void gpr_mu_unlock(gpr_mu* mu) { - GRPC_TIMER_BEGIN(GRPC_PTAG_MUTEX_UNLOCK, 0); - GPR_ASSERT(pthread_mutex_unlock(mu) == 0); - GRPC_TIMER_END(GRPC_PTAG_MUTEX_UNLOCK, 0); +void gpr_mu_unlock(gpr_mu* mu) { + GRPC_TIMER_BEGIN("gpr_mu_unlock", 0); + GPR_ASSERT(pthread_mutex_unlock(mu) == 0); + GRPC_TIMER_END("gpr_mu_unlock", 0); } int gpr_mu_trylock(gpr_mu* mu) { diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 9e2182952b6..73c526022d1 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -306,8 +306,9 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call, grpc_transport_stream_op *initial_op_ptr = NULL; grpc_channel_stack *channel_stack = grpc_channel_get_channel_stack(channel); grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_call *call = - gpr_malloc(sizeof(grpc_call) + channel_stack->call_stack_size); + grpc_call *call; + GRPC_TIMER_BEGIN("grpc_call_create", 0); + call = gpr_malloc(sizeof(grpc_call) + channel_stack->call_stack_size); memset(call, 0, sizeof(grpc_call)); gpr_mu_init(&call->mu); gpr_mu_init(&call->completion_mu); @@ -401,6 +402,7 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call, set_deadline_alarm(&exec_ctx, call, send_deadline); } grpc_exec_ctx_finish(&exec_ctx); + GRPC_TIMER_END("grpc_call_create", 0); return call; } @@ -462,6 +464,7 @@ void grpc_call_internal_ref(grpc_call *c) { static void destroy_call(grpc_exec_ctx *exec_ctx, grpc_call *call) { size_t i; grpc_call *c = call; + GRPC_TIMER_BEGIN("destroy_call", 0); grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c)); GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call"); gpr_mu_destroy(&c->mu); @@ -494,6 +497,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, grpc_call *call) { GRPC_CQ_INTERNAL_UNREF(c->cq, "bind"); } gpr_free(c); + GRPC_TIMER_END("destroy_call", 0); } #ifdef GRPC_CALL_REF_COUNT_DEBUG @@ -613,7 +617,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { const size_t MAX_RECV_PEEK_AHEAD = 65536; size_t buffered_bytes; - GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_UNLOCK, 0); + GRPC_TIMER_BEGIN("unlock", 0); memset(&op, 0, sizeof(op)); @@ -686,7 +690,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completing"); } - GRPC_TIMER_END(GRPC_PTAG_CALL_UNLOCK, 0); + GRPC_TIMER_END("unlock", 0); } static void get_final_status(grpc_call *call, grpc_ioreq_data out) { @@ -836,7 +840,7 @@ static void early_out_write_ops(grpc_call *call) { static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { grpc_call *call = pc; - GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_ON_DONE_SEND, 0); + GRPC_TIMER_BEGIN("call_on_done_send", 0); lock(call); if (call->last_send_contains & (1 << GRPC_IOREQ_SEND_INITIAL_METADATA)) { finish_ioreq_op(call, GRPC_IOREQ_SEND_INITIAL_METADATA, success); @@ -860,10 +864,11 @@ static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { call->sending = 0; unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "sending"); - GRPC_TIMER_END(GRPC_PTAG_CALL_ON_DONE_SEND, 0); + GRPC_TIMER_END("call_on_done_send", 0); } static void finish_message(grpc_call *call) { + GRPC_TIMER_BEGIN("finish_message", 0); if (call->error_status_set == 0) { /* TODO(ctiller): this could be a lot faster if coded directly */ grpc_byte_buffer *byte_buffer; @@ -883,6 +888,7 @@ static void finish_message(grpc_call *call) { gpr_slice_buffer_reset_and_unref(&call->incoming_message); GPR_ASSERT(call->incoming_message.count == 0); call->reading_message = 0; + GRPC_TIMER_END("finish_message", 0); } static int begin_message(grpc_call *call, grpc_begin_message msg) { @@ -972,7 +978,7 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { grpc_call *child_call; grpc_call *next_child_call; size_t i; - GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_ON_DONE_RECV, 0); + GRPC_TIMER_BEGIN("call_on_done_recv", 0); lock(call); call->receiving = 0; if (success) { @@ -982,13 +988,19 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { case GRPC_NO_OP: break; case GRPC_OP_METADATA: + GRPC_TIMER_BEGIN("recv_metadata", 0); recv_metadata(exec_ctx, call, &op->data.metadata); + GRPC_TIMER_END("recv_metadata", 0); break; case GRPC_OP_BEGIN_MESSAGE: + GRPC_TIMER_BEGIN("begin_message", 0); success = begin_message(call, op->data.begin_message); + GRPC_TIMER_END("begin_message", 0); break; case GRPC_OP_SLICE: + GRPC_TIMER_BEGIN("add_slice_to_message", 0); success = add_slice_to_message(call, op->data.slice); + GRPC_TIMER_END("add_slice_to_message", 0); break; } } @@ -1034,7 +1046,7 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "receiving"); - GRPC_TIMER_END(GRPC_PTAG_CALL_ON_DONE_RECV, 0); + GRPC_TIMER_END("call_on_done_recv", 0); } static int prepare_application_metadata(grpc_call *call, size_t count, @@ -1512,16 +1524,25 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, grpc_mdelem *mdel = l->md; grpc_mdstr *key = mdel->key; if (key == grpc_channel_get_status_string(call->channel)) { + GRPC_TIMER_BEGIN("status", 0); set_status_code(call, STATUS_FROM_WIRE, decode_status(mdel)); + GRPC_TIMER_END("status", 0); } else if (key == grpc_channel_get_message_string(call->channel)) { + GRPC_TIMER_BEGIN("status-details", 0); set_status_details(call, STATUS_FROM_WIRE, GRPC_MDSTR_REF(mdel->value)); + GRPC_TIMER_END("status-details", 0); } else if (key == grpc_channel_get_compression_algorithm_string(call->channel)) { + GRPC_TIMER_BEGIN("compression_algorithm", 0); set_compression_algorithm(call, decode_compression(mdel)); + GRPC_TIMER_END("compression_algorithm", 0); } else if (key == grpc_channel_get_encodings_accepted_by_peer_string( call->channel)) { + GRPC_TIMER_BEGIN("encodings_accepted_by_peer", 0); set_encodings_accepted_by_peer(call, mdel->value->slice); + GRPC_TIMER_END("encodings_accepted_by_peer", 0); } else { + GRPC_TIMER_BEGIN("report_up", 0); dest = &call->buffered_metadata[is_trailing]; if (dest->count == dest->capacity) { dest->capacity = GPR_MAX(dest->capacity + 8, dest->capacity * 2); @@ -1542,12 +1563,15 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, } call->owned_metadata[call->owned_metadata_count++] = mdel; l->md = NULL; + GRPC_TIMER_END("report_up", 0); } } if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) != 0 && !call->is_client) { + GRPC_TIMER_BEGIN("set_deadline_alarm", 0); set_deadline_alarm(exec_ctx, call, md->deadline); + GRPC_TIMER_END("set_deadline_alarm", 0); } if (!is_trailing) { call->read_state = READ_STATE_GOT_INITIAL_METADATA; @@ -1610,7 +1634,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, grpc_call_error error; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN(GRPC_PTAG_CALL_START_BATCH, 0); + GRPC_TIMER_BEGIN("grpc_call_start_batch", 0); GRPC_API_TRACE( "grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, reserved=%p)", @@ -1849,7 +1873,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, finish_func, tag); done: grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END(GRPC_PTAG_CALL_START_BATCH, 0); + GRPC_TIMER_END("grpc_call_start_batch", 0); return error; } diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 5ca8f837df4..695dfbd83b4 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -185,7 +185,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, gpr_timespec now; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN(GRPC_PTAG_CQ_NEXT, 0); + GRPC_TIMER_BEGIN("grpc_completion_queue_next", 0); GRPC_API_TRACE( "grpc_completion_queue_next(" @@ -234,7 +234,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, GRPC_CQ_INTERNAL_UNREF(cc, "next"); grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END(GRPC_PTAG_CQ_NEXT, 0); + GRPC_TIMER_END("grpc_completion_queue_next", 0); return ret; } @@ -274,7 +274,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, int first_loop = 1; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN(GRPC_PTAG_CQ_PLUCK, 0); + GRPC_TIMER_BEGIN("grpc_completion_queue_pluck", 0); GRPC_API_TRACE( "grpc_completion_queue_pluck(" @@ -342,7 +342,7 @@ done: GRPC_CQ_INTERNAL_UNREF(cc, "pluck"); grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END(GRPC_PTAG_CQ_PLUCK, 0); + GRPC_TIMER_END("grpc_completion_queue_pluck", 0); return ret; } diff --git a/src/core/transport/chttp2/parsing.c b/src/core/transport/chttp2/parsing.c index f7a0a10581b..e71d4fc87aa 100644 --- a/src/core/transport/chttp2/parsing.c +++ b/src/core/transport/chttp2/parsing.c @@ -35,6 +35,7 @@ #include +#include "src/core/profiling/timers.h" #include "src/core/transport/chttp2/http2_errors.h" #include "src/core/transport/chttp2/status_conversion.h" #include "src/core/transport/chttp2/timeout_encoding.h" @@ -68,6 +69,8 @@ void grpc_chttp2_prepare_to_read( grpc_chttp2_stream_global *stream_global; grpc_chttp2_stream_parsing *stream_parsing; + GRPC_TIMER_BEGIN("grpc_chttp2_prepare_to_read", 0); + transport_parsing->next_stream_id = transport_global->next_stream_id; /* update the parsing view of incoming window */ @@ -89,6 +92,8 @@ void grpc_chttp2_prepare_to_read( stream_parsing->incoming_window = stream_global->incoming_window; } } + + GRPC_TIMER_END("grpc_chttp2_prepare_to_read", 0); } void grpc_chttp2_publish_reads( diff --git a/src/core/transport/chttp2/writing.c b/src/core/transport/chttp2/writing.c index d1c9da6df09..4abe00bb7cf 100644 --- a/src/core/transport/chttp2/writing.c +++ b/src/core/transport/chttp2/writing.c @@ -37,6 +37,7 @@ #include +#include "src/core/profiling/timers.h" #include "src/core/transport/chttp2/http2_errors.h" static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing); @@ -180,6 +181,8 @@ void grpc_chttp2_perform_writes( static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) { grpc_chttp2_stream_writing *stream_writing; + GRPC_TIMER_BEGIN("finalize_outbuf", 0); + while ( grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) { if (stream_writing->sopb.nops > 0 || @@ -208,6 +211,8 @@ static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) { } grpc_chttp2_list_add_written_stream(transport_writing, stream_writing); } + + GRPC_TIMER_END("finalize_outbuf", 0); } void grpc_chttp2_cleanup_writing( diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 0a1b3a8176b..d39816b0117 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -510,6 +510,7 @@ grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream( static void lock(grpc_chttp2_transport *t) { gpr_mu_lock(&t->mu); } static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) { + GRPC_TIMER_BEGIN("unlock", 0); unlock_check_read_write_state(exec_ctx, t); if (!t->writing_active && !t->closed && grpc_chttp2_unlocking_check_writes(&t->global, &t->writing)) { @@ -520,6 +521,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) { } gpr_mu_unlock(&t->mu); + GRPC_TIMER_END("unlock", 0); } /* @@ -546,7 +548,7 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_writing *transport_writing = transport_writing_ptr; grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing); - GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_TERMINATE_WRITING, 0); + GRPC_TIMER_BEGIN("grpc_chttp2_terminate_writing", 0); lock(t); @@ -569,16 +571,16 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, unlock(exec_ctx, t); UNREF_TRANSPORT(exec_ctx, t, "writing"); - - GRPC_TIMER_END(GRPC_PTAG_HTTP2_TERMINATE_WRITING, 0); + + GRPC_TIMER_END("grpc_chttp2_terminate_writing", 0); } static void writing_action(grpc_exec_ctx *exec_ctx, void *gt, int iomgr_success_ignored) { grpc_chttp2_transport *t = gt; - GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_WRITING_ACTION, 0); + GRPC_TIMER_BEGIN("writing_action", 0); grpc_chttp2_perform_writes(exec_ctx, &t->writing, t->ep); - GRPC_TIMER_END(GRPC_PTAG_HTTP2_WRITING_ACTION, 0); + GRPC_TIMER_END("writing_action", 0); } void grpc_chttp2_add_incoming_goaway( @@ -648,6 +650,7 @@ static void maybe_start_some_streams( static void perform_stream_op_locked( grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global, grpc_chttp2_stream_global *stream_global, grpc_transport_stream_op *op) { + GRPC_TIMER_BEGIN("perform_stream_op_locked", 0); if (op->cancel_with_status != GRPC_STATUS_OK) { cancel_from_api(transport_global, stream_global, op->cancel_with_status); } @@ -719,6 +722,7 @@ static void perform_stream_op_locked( } grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, 1); + GRPC_TIMER_END("perform_stream_op_locked", 0); } static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, @@ -1109,7 +1113,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { int keep_reading = 0; grpc_chttp2_transport *t = tp; - GRPC_TIMER_BEGIN(GRPC_PTAG_HTTP2_RECV_DATA, 0); + GRPC_TIMER_BEGIN("recv_data", 0); lock(t); i = 0; @@ -1121,11 +1125,13 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { &t->parsing_stream_map); grpc_chttp2_prepare_to_read(&t->global, &t->parsing); gpr_mu_unlock(&t->mu); + GRPC_TIMER_BEGIN("recv_data.parse", 0); for (; i < t->read_buffer.count && grpc_chttp2_perform_read(exec_ctx, &t->parsing, t->read_buffer.slices[i]); i++) ; + GRPC_TIMER_END("recv_data.parse", 0); gpr_mu_lock(&t->mu); if (i != t->read_buffer.count) { drop_connection(exec_ctx, t); @@ -1163,7 +1169,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { UNREF_TRANSPORT(exec_ctx, t, "recv_data"); } - GRPC_TIMER_END(GRPC_PTAG_HTTP2_RECV_DATA, 0); + GRPC_TIMER_END("recv_data", 0); } /* diff --git a/src/core/transport/stream_op.c b/src/core/transport/stream_op.c index 1cb2bd7c598..5c3c90b0541 100644 --- a/src/core/transport/stream_op.c +++ b/src/core/transport/stream_op.c @@ -38,6 +38,8 @@ #include #include +#include "src/core/profiling/timers.h" + /* Exponential growth function: Given x, return a larger x. Currently we grow by 1.5 times upon reallocation. */ #define GROW(x) (3 * (x) / 2) @@ -300,6 +302,8 @@ void grpc_metadata_batch_filter(grpc_metadata_batch *batch, grpc_linked_mdelem *l; grpc_linked_mdelem *next; + GRPC_TIMER_BEGIN("grpc_metadata_batch_filter", 0); + assert_valid_list(&batch->list); assert_valid_list(&batch->garbage); for (l = batch->list.head; l; l = next) { @@ -328,4 +332,6 @@ void grpc_metadata_batch_filter(grpc_metadata_batch *batch, } assert_valid_list(&batch->list); assert_valid_list(&batch->garbage); + + GRPC_TIMER_END("grpc_metadata_batch_filter", 0); } diff --git a/src/core/tsi/fake_transport_security.c b/src/core/tsi/fake_transport_security.c index a40268a7f0b..99e28ab63b2 100644 --- a/src/core/tsi/fake_transport_security.c +++ b/src/core/tsi/fake_transport_security.c @@ -121,7 +121,7 @@ static void store32_little_endian(gpr_uint32 value, unsigned char *buf) { buf[3] = (unsigned char)((value >> 24) & 0xFF); buf[2] = (unsigned char)((value >> 16) & 0xFF); buf[1] = (unsigned char)((value >> 8) & 0xFF); - buf[0] = (unsigned char)((value) & 0xFF); + buf[0] = (unsigned char)((value)&0xFF); } static void tsi_fake_frame_reset(tsi_fake_frame *frame, int needs_draining) { diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index 4131fbe5e50..a7b6fd241b5 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -42,6 +42,8 @@ #include #include +#include "src/core/profiling/timers.h" + const int kMaxBufferLength = 8192; class GrpcBufferWriter GRPC_FINAL @@ -158,6 +160,7 @@ namespace grpc { Status SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** bp) { + GRPC_TIMER_SCOPE("SerializeProto", 0); int byte_size = msg.ByteSize(); if (byte_size <= kMaxBufferLength) { gpr_slice slice = gpr_slice_malloc(byte_size); @@ -176,6 +179,7 @@ Status SerializeProto(const grpc::protobuf::Message& msg, Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, int max_message_size) { + GRPC_TIMER_SCOPE("DeserializeProto", 0); if (!buffer) { return Status(StatusCode::INTERNAL, "No payload"); } diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index f2719735062..2cd1905a97d 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -541,7 +541,7 @@ void Server::ScheduleCallback() { void Server::RunRpc() { // Wait for one more incoming rpc. bool ok; - GRPC_TIMER_BEGIN(GRPC_PTAG_SERVER_CALL, 0); + GRPC_TIMER_SCOPE("Server::RunRpc", 0); auto* mrd = SyncRequest::Wait(&cq_, &ok); if (mrd) { ScheduleCallback(); @@ -557,12 +557,10 @@ void Server::RunRpc() { mrd->TeardownRequest(); } } - GRPC_TIMER_BEGIN(GRPC_PTAG_SERVER_CALLBACK, 0); + GRPC_TIMER_SCOPE("cd.Run()", 0); cd.Run(); - GRPC_TIMER_END(GRPC_PTAG_SERVER_CALLBACK, 0); } } - GRPC_TIMER_END(GRPC_PTAG_SERVER_CALL, 0); { grpc::unique_lock lock(mu_); diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc index 0523371013d..6adf92a005c 100644 --- a/test/cpp/qps/client_sync.cc +++ b/test/cpp/qps/client_sync.cc @@ -101,11 +101,10 @@ class SynchronousUnaryClient GRPC_FINAL : public SynchronousClient { WaitToIssue(thread_idx); auto* stub = channels_[thread_idx % channels_.size()].get_stub(); double start = Timer::Now(); + GRPC_TIMER_SCOPE("SynchronousUnaryClient::ThreadFunc", 0); grpc::ClientContext context; - GRPC_TIMER_BEGIN(GRPC_PTAG_CLIENT_UNARY_CALL, 0); grpc::Status s = stub->UnaryCall(&context, request_, &responses_[thread_idx]); - GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); histogram->Add((Timer::Now() - start) * 1e9); return s.ok(); } @@ -139,15 +138,13 @@ class SynchronousStreamingClient GRPC_FINAL : public SynchronousClient { bool ThreadFunc(Histogram* histogram, size_t thread_idx) GRPC_OVERRIDE { WaitToIssue(thread_idx); + GRPC_TIMER_SCOPE("SynchronousStreamingClient::ThreadFunc", 0); double start = Timer::Now(); - GRPC_TIMER_BEGIN(GRPC_PTAG_CLIENT_UNARY_CALL, 0); if (stream_[thread_idx]->Write(request_) && stream_[thread_idx]->Read(&responses_[thread_idx])) { - GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); histogram->Add((Timer::Now() - start) * 1e9); return true; } - GRPC_TIMER_END(GRPC_PTAG_CLIENT_UNARY_CALL, 0); return false; } diff --git a/tools/profiling/latency_profile/profile_analyzer.py b/tools/profiling/latency_profile/profile_analyzer.py index 175b1859354..6de2fe735c8 100755 --- a/tools/profiling/latency_profile/profile_analyzer.py +++ b/tools/profiling/latency_profile/profile_analyzer.py @@ -29,6 +29,8 @@ class LineItem(object): self.start_time = line['t'] self.end_time = None self.important = line['imp'] + self.filename = line['file'] + self.fileline = line['line'] self.times = {} @@ -48,7 +50,7 @@ class ScopeBuilder(object): def finish(self, line): - assert line['tag'] == self.top_line.tag + assert line['tag'] == self.top_line.tag, 'expected %s, got %s' % (self.top_line.tag, line['tag']) final_time_stamp = line['t'] assert self.top_line.end_time is None self.top_line.end_time = final_time_stamp @@ -187,6 +189,7 @@ def time_format(idx): FORMAT = [ ('TAG', lambda line: '..'*line.indent + tidy_tag(line.tag)), + ('LOC', lambda line: '%s:%d' % (line.filename[line.filename.rfind('/')+1:], line.fileline)), ('FROM_STACK_START', time_format(TIME_FROM_STACK_START)), ('SELF', time_format(SELF_TIME)), ('TO_STACK_END', time_format(TIME_TO_STACK_END)), From 26ea9e28815bc473d72c0c1909e9ac3b30a4f9aa Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi Date: Fri, 9 Oct 2015 15:19:17 -0700 Subject: [PATCH 026/111] Give Python tests 15 minutes Also refactors configurations to setting timeout multipliers and allowing individual test languages to set their desired absolute timeouts. --- tools/run_tests/run_tests.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index a3bed4ef879..2916bdcb339 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -71,16 +71,17 @@ def platform_string(): # SimpleConfig: just compile with CONFIG=config, and run the binary to test class SimpleConfig(object): - def __init__(self, config, environ=None, timeout_seconds=5*60): + def __init__(self, config, environ=None, timeout_multiplier=1): if environ is None: environ = {} self.build_config = config self.allow_hashing = (config != 'gcov') self.environ = environ self.environ['CONFIG'] = config - self.timeout_seconds = timeout_seconds + self.timeout_multiplier = timeout_multiplier - def job_spec(self, cmdline, hash_targets, shortname=None, environ={}): + def job_spec(self, cmdline, hash_targets, timeout_seconds=5*60, + shortname=None, environ={}): """Construct a jobset.JobSpec for a test under this config Args: @@ -98,7 +99,7 @@ class SimpleConfig(object): return jobset.JobSpec(cmdline=cmdline, shortname=shortname, environ=actual_environ, - timeout_seconds=self.timeout_seconds, + timeout_seconds=self.timeout_multiplier * timeout_seconds, hash_targets=hash_targets if self.allow_hashing else None, flake_retries=5 if args.allow_flakes else 0) @@ -248,6 +249,7 @@ class PythonLanguage(object): None, environ=environment, shortname='py.test', + timeout_seconds=15*60 )] def pre_build_steps(self): @@ -431,11 +433,11 @@ class Build(object): _CONFIGS = { 'dbg': SimpleConfig('dbg'), 'opt': SimpleConfig('opt'), - 'tsan': SimpleConfig('tsan', timeout_seconds=10*60, environ={ + 'tsan': SimpleConfig('tsan', timeout_multiplier=2, environ={ 'TSAN_OPTIONS': 'suppressions=tools/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1'}), - 'msan': SimpleConfig('msan', timeout_seconds=7*60), + 'msan': SimpleConfig('msan', timeout_multiplier=1.5), 'ubsan': SimpleConfig('ubsan'), - 'asan': SimpleConfig('asan', timeout_seconds=7*60, environ={ + 'asan': SimpleConfig('asan', timeout_multiplier=1.5, environ={ 'ASAN_OPTIONS': 'detect_leaks=1:color=always:suppressions=tools/tsan_suppressions.txt', 'LSAN_OPTIONS': 'report_objects=1'}), 'asan-noleaks': SimpleConfig('asan', environ={ From 3ff27547389509123c4c64e5351d7c7983c8cba2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 15:39:44 -0700 Subject: [PATCH 027/111] Enable cache for encodings accepted by peer --- src/core/surface/call.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 73c526022d1..03031770845 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -536,12 +536,24 @@ grpc_compression_algorithm grpc_call_get_compression_algorithm( return call->compression_algorithm; } -static void set_encodings_accepted_by_peer( - grpc_call *call, const gpr_slice accept_encoding_slice) { +static void destroy_encodings_accepted_by_peer(void *p) { return; } + +static void set_encodings_accepted_by_peer(grpc_call *call, grpc_mdelem *mdel) { size_t i; grpc_compression_algorithm algorithm; gpr_slice_buffer accept_encoding_parts; + gpr_slice accept_encoding_slice; + void *accepted_user_data; + + accepted_user_data = + grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer); + if (accepted_user_data != NULL) { + call->encodings_accepted_by_peer = + (gpr_uint32)(((gpr_uintptr)accepted_user_data) - 1); + return; + } + accept_encoding_slice = mdel->value->slice; gpr_slice_buffer_init(&accept_encoding_parts); gpr_slice_split(accept_encoding_slice, ",", &accept_encoding_parts); @@ -565,6 +577,12 @@ static void set_encodings_accepted_by_peer( gpr_free(accept_encoding_entry_str); } } + + gpr_slice_buffer_destroy(&accept_encoding_parts); + + grpc_mdelem_set_user_data( + mdel, destroy_encodings_accepted_by_peer, + (void *)(((gpr_uintptr)call->encodings_accepted_by_peer) + 1)); } gpr_uint32 grpc_call_get_encodings_accepted_by_peer(grpc_call *call) { @@ -1539,7 +1557,7 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, } else if (key == grpc_channel_get_encodings_accepted_by_peer_string( call->channel)) { GRPC_TIMER_BEGIN("encodings_accepted_by_peer", 0); - set_encodings_accepted_by_peer(call, mdel->value->slice); + set_encodings_accepted_by_peer(call, mdel); GRPC_TIMER_END("encodings_accepted_by_peer", 0); } else { GRPC_TIMER_BEGIN("report_up", 0); From ae369de3b81cf16db74f68e4e260ebbd291a65ba Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 15:40:48 -0700 Subject: [PATCH 028/111] Added node pre-build steps to run_tests.py --- tools/run_tests/run_tests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index a3bed4ef879..e75ac0724f7 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -191,7 +191,8 @@ class NodeLanguage(object): environ=_FORCE_ENVIRON_FOR_WRAPPERS)] def pre_build_steps(self): - return [] + # Default to 1 week cache expiration + return [['npm', 'update', '--cache-min', '604800']] def make_targets(self): return [] From e754079d0d0ada139fa81f1b5ef9a1c31e785e23 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 15:43:14 -0700 Subject: [PATCH 029/111] Fixed spelling error --- binding.gyp | 2 +- templates/binding.gyp.template | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index ed7fc757c93..392835c7721 100644 --- a/binding.gyp +++ b/binding.gyp @@ -42,7 +42,7 @@ }, # TODO: Finish windows support 'target_defaults': { - # Emperically, Node only exports ALPN symbols if its major version is >0. + # Empirically, Node only exports ALPN symbols if its major version is >0. # io.js always reports versions >0 and always exports ALPN symbols. # Therefore, Node's major version will be truthy if and only if it # supports ALPN. The output of "node -v" is v[major].[minor].[patch], diff --git a/templates/binding.gyp.template b/templates/binding.gyp.template index 5fcd247442c..50d0823d1d4 100644 --- a/templates/binding.gyp.template +++ b/templates/binding.gyp.template @@ -44,7 +44,7 @@ }, # TODO: Finish windows support 'target_defaults': { - # Emperically, Node only exports ALPN symbols if its major version is >0. + # Empirically, Node only exports ALPN symbols if its major version is >0. # io.js always reports versions >0 and always exports ALPN symbols. # Therefore, Node's major version will be truthy if and only if it # supports ALPN. The output of "node -v" is v[major].[minor].[patch], From 28c06d85201c8b6a68075e1d034fddc6d0644d79 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Oct 2015 16:07:36 -0700 Subject: [PATCH 030/111] Added persistent caching for npm dependencies in Jenkins Dockerfiles --- tools/jenkins/build_docker_and_run_tests.sh | 1 + tools/jenkins/grpc_jenkins_slave/Dockerfile | 2 +- tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/jenkins/build_docker_and_run_tests.sh b/tools/jenkins/build_docker_and_run_tests.sh index 6e3166ce579..5bb2b6b1886 100755 --- a/tools/jenkins/build_docker_and_run_tests.sh +++ b/tools/jenkins/build_docker_and_run_tests.sh @@ -66,6 +66,7 @@ docker run \ -i $TTY_FLAG \ -v "$git_root:/var/local/jenkins/grpc" \ -v /tmp/ccache:/tmp/ccache \ + -v /tmp/npm-cache:/tmp/npm-cache \ -v /tmp/xdg-cache-home:/tmp/xdg-cache-home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/bin/docker \ diff --git a/tools/jenkins/grpc_jenkins_slave/Dockerfile b/tools/jenkins/grpc_jenkins_slave/Dockerfile index 5f2b425c8c2..44796ce4c62 100644 --- a/tools/jenkins/grpc_jenkins_slave/Dockerfile +++ b/tools/jenkins/grpc_jenkins_slave/Dockerfile @@ -101,7 +101,7 @@ ENV NUGET mono /var/local/NuGet.exe # Install nvm RUN touch .profile RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash -RUN /bin/bash -l -c "nvm install 0.12" +RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache" ################## # Ruby dependencies diff --git a/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile index 81a03990916..7179a50cc59 100644 --- a/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile +++ b/tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile @@ -101,7 +101,7 @@ ENV NUGET mono /var/local/NuGet.exe # Install nvm RUN touch .profile RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash -RUN /bin/bash -l -c "nvm install 0.12" +RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache" ################## # Ruby dependencies From 01ac4f0e46a39a8f28f01a4fae5abc80fd7d412c Mon Sep 17 00:00:00 2001 From: Julien Boeuf Date: Fri, 9 Oct 2015 16:08:24 -0700 Subject: [PATCH 031/111] Removing warnings when using boringssl. boringssl and openssl do not have the same method signatures (integer types differ). --- src/core/tsi/ssl_transport_security.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/tsi/ssl_transport_security.c b/src/core/tsi/ssl_transport_security.c index 05789f07d49..22b57964cca 100644 --- a/src/core/tsi/ssl_transport_security.c +++ b/src/core/tsi/ssl_transport_security.c @@ -319,8 +319,9 @@ static tsi_result peer_from_x509(X509 *cert, int include_certificate_type, /* TODO(jboeuf): Maybe add more properties. */ GENERAL_NAMES *subject_alt_names = X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0); - int subject_alt_name_count = - (subject_alt_names != NULL) ? sk_GENERAL_NAME_num(subject_alt_names) : 0; + int subject_alt_name_count = (subject_alt_names != NULL) + ? (int)sk_GENERAL_NAME_num(subject_alt_names) + : 0; size_t property_count; tsi_result result; GPR_ASSERT(subject_alt_name_count >= 0); @@ -358,7 +359,7 @@ static void log_ssl_error_stack(void) { unsigned long err; while ((err = ERR_get_error()) != 0) { char details[256]; - ERR_error_string_n(err, details, sizeof(details)); + ERR_error_string_n((uint32_t)err, details, sizeof(details)); gpr_log(GPR_ERROR, "%s", details); } } @@ -668,7 +669,7 @@ static tsi_result ssl_protector_protect(tsi_frame_protector *self, tsi_result result = TSI_OK; /* First see if we have some pending data in the SSL BIO. */ - int pending_in_ssl = BIO_pending(impl->from_ssl); + int pending_in_ssl = (int)BIO_pending(impl->from_ssl); if (pending_in_ssl > 0) { *unprotected_bytes_size = 0; GPR_ASSERT(*protected_output_frames_size <= INT_MAX); @@ -726,7 +727,7 @@ static tsi_result ssl_protector_protect_flush( impl->buffer_offset = 0; } - pending = BIO_pending(impl->from_ssl); + pending = (int)BIO_pending(impl->from_ssl); GPR_ASSERT(pending >= 0); *still_pending_size = (size_t)pending; if (*still_pending_size == 0) return TSI_OK; @@ -739,7 +740,7 @@ static tsi_result ssl_protector_protect_flush( return TSI_INTERNAL_ERROR; } *protected_output_frames_size = (size_t)read_from_ssl; - pending = BIO_pending(impl->from_ssl); + pending = (int)BIO_pending(impl->from_ssl); GPR_ASSERT(pending >= 0); *still_pending_size = (size_t)pending; return TSI_OK; From ce1f19e531119d1f2f1294bcf32c5e93ef615f74 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 16:16:04 -0700 Subject: [PATCH 032/111] More markup --- src/core/surface/completion_queue.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 695dfbd83b4..7c0183257ca 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -144,6 +144,8 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, int i; grpc_pollset_worker *pluck_worker; + GRPC_TIMER_BEGIN("grpc_cq_end_op", 0); + storage->tag = tag; storage->done = done; storage->done_arg = done_arg; @@ -175,6 +177,8 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset)); grpc_pollset_shutdown(exec_ctx, &cc->pollset, &cc->pollset_destroy_done); } + + GRPC_TIMER_END("grpc_cq_end_op", 0); } grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, From 44011e8ab3acd37677478b471dbb35877fadeaa1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 16:16:43 -0700 Subject: [PATCH 033/111] More markup --- src/core/iomgr/pollset_posix.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 9fda8f8c0cc..6c813bf27af 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -101,9 +101,12 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) { void grpc_pollset_kick_ext(grpc_pollset *p, grpc_pollset_worker *specific_worker, gpr_uint32 flags) { + GRPC_TIMER_BEGIN("grpc_pollset_kick_ext", 0); + /* pollset->mu already held */ if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { + GRPC_TIMER_BEGIN("grpc_pollset_kick_ext.broadcast", 0); GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); for (specific_worker = p->root_worker.next; specific_worker != &p->root_worker; @@ -111,44 +114,50 @@ void grpc_pollset_kick_ext(grpc_pollset *p, grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); } p->kicked_without_pollers = 1; - return; + GRPC_TIMER_END("grpc_pollset_kick_ext.broadcast", 0); } else if (gpr_tls_get(&g_current_thread_worker) != (gpr_intptr)specific_worker) { + GRPC_TIMER_MARK("different_thread_worker", 0); if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) { specific_worker->reevaluate_polling_on_wakeup = 1; } grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); - return; } else if ((flags & GRPC_POLLSET_CAN_KICK_SELF) != 0) { + GRPC_TIMER_MARK("kick_yoself", 0); if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) { specific_worker->reevaluate_polling_on_wakeup = 1; } grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); - return; } } else if (gpr_tls_get(&g_current_thread_poller) != (gpr_intptr)p) { GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); + GRPC_TIMER_MARK("kick_anonymous", 0); specific_worker = pop_front_worker(p); if (specific_worker != NULL) { if (gpr_tls_get(&g_current_thread_worker) == (gpr_intptr)specific_worker) { + GRPC_TIMER_MARK("kick_anonymous_not_self", 0); push_back_worker(p, specific_worker); specific_worker = pop_front_worker(p); if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 && gpr_tls_get(&g_current_thread_worker) == (gpr_intptr)specific_worker) { push_back_worker(p, specific_worker); - return; + specific_worker = NULL; } } - push_back_worker(p, specific_worker); - grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); - return; + if (specific_worker != NULL) { + GRPC_TIMER_MARK("finally_kick", 0); + push_back_worker(p, specific_worker); + grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); + } } else { + GRPC_TIMER_MARK("kicked_no_pollers", 0); p->kicked_without_pollers = 1; - return; } } + + GRPC_TIMER_END("grpc_pollset_kick_ext", 0); } void grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { From cb7bf8a0571def53a538fb8b34f53f98fdb5611a Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 16:18:15 -0700 Subject: [PATCH 034/111] Set current worker for longer ==> Less self kicking ==> Double performance for sync_unary_ping_pong_test on my machine --- src/core/iomgr/pollset_posix.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 6c813bf27af..d93f3398778 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -280,16 +280,15 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (!added_worker) { push_front_worker(pollset, worker); added_worker = 1; + gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); } gpr_tls_set(&g_current_thread_poller, (gpr_intptr)pollset); - gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); GRPC_TIMER_BEGIN("maybe_work_and_unlock", 0); pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker, deadline, now); GRPC_TIMER_END("maybe_work_and_unlock", 0); locked = 0; gpr_tls_set(&g_current_thread_poller, 0); - gpr_tls_set(&g_current_thread_worker, 0); } else { pollset->kicked_without_pollers = 0; } @@ -319,6 +318,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } if (added_worker) { remove_worker(pollset, worker); + gpr_tls_set(&g_current_thread_worker, 0); } grpc_wakeup_fd_destroy(&worker->wakeup_fd); if (pollset->shutting_down) { From 5994bd167a52c361a9171f5d1ecc63e284907ec9 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Fri, 9 Oct 2015 16:23:46 -0700 Subject: [PATCH 035/111] Avoid lock/unlock for common client channel pick. --- src/core/channel/client_channel.c | 25 ++++++++++++++++++------- src/core/client_config/subchannel.c | 17 ++++++++++------- src/core/client_config/subchannel.h | 22 ++++++++++++++++------ 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index 8e7cb27cfd2..ed73b042db2 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -196,13 +196,12 @@ static int is_empty(void *p, int len) { return 1; } -static void started_call(grpc_exec_ctx *exec_ctx, void *arg, - int iomgr_success) { +static void started_call_locked(grpc_exec_ctx *exec_ctx, void *arg, + int iomgr_success) { call_data *calld = arg; grpc_transport_stream_op op; int have_waiting; - gpr_mu_lock(&calld->mu_state); if (calld->state == CALL_CANCELLED && calld->subchannel_call != NULL) { memset(&op, 0, sizeof(op)); op.cancel_with_status = GRPC_STATUS_CANCELLED; @@ -230,10 +229,18 @@ static void started_call(grpc_exec_ctx *exec_ctx, void *arg, } } +static void started_call(grpc_exec_ctx *exec_ctx, void *arg, + int iomgr_success) { + call_data *calld = arg; + gpr_mu_lock(&calld->mu_state); + started_call_locked(exec_ctx, arg, iomgr_success); +} + static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, int iomgr_success) { call_data *calld = arg; grpc_pollset *pollset; + grpc_subchannel_call_create_status call_creation_status; if (calld->picked_channel == NULL) { /* treat this like a cancellation */ @@ -248,11 +255,15 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, GPR_ASSERT(calld->state == CALL_WAITING_FOR_PICK); calld->state = CALL_WAITING_FOR_CALL; pollset = calld->waiting_op.bind_pollset; - gpr_mu_unlock(&calld->mu_state); grpc_closure_init(&calld->async_setup_task, started_call, calld); - grpc_subchannel_create_call(exec_ctx, calld->picked_channel, pollset, - &calld->subchannel_call, - &calld->async_setup_task); + call_creation_status = grpc_subchannel_create_call( + exec_ctx, calld->picked_channel, pollset, &calld->subchannel_call, + &calld->async_setup_task); + if (call_creation_status == GRPC_SUBCHANNEL_CALL_CREATE_READY) { + started_call_locked(exec_ctx, calld, iomgr_success); + } else { + gpr_mu_unlock(&calld->mu_state); + } } } } diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c index a2c521a20d9..5e84dec0ca5 100644 --- a/src/core/client_config/subchannel.c +++ b/src/core/client_config/subchannel.c @@ -335,18 +335,20 @@ static void start_connect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) { static void continue_creating_call(grpc_exec_ctx *exec_ctx, void *arg, int iomgr_success) { + grpc_subchannel_call_create_status call_creation_status; waiting_for_connect *w4c = arg; grpc_subchannel_del_interested_party(exec_ctx, w4c->subchannel, w4c->pollset); - grpc_subchannel_create_call(exec_ctx, w4c->subchannel, w4c->pollset, - w4c->target, w4c->notify); + call_creation_status = grpc_subchannel_create_call( + exec_ctx, w4c->subchannel, w4c->pollset, w4c->target, w4c->notify); + GPR_ASSERT(call_creation_status == GRPC_SUBCHANNEL_CALL_CREATE_READY); + w4c->notify->cb(exec_ctx, w4c->notify->cb_arg, iomgr_success); GRPC_SUBCHANNEL_UNREF(exec_ctx, w4c->subchannel, "waiting_for_connect"); gpr_free(w4c); } -void grpc_subchannel_create_call(grpc_exec_ctx *exec_ctx, grpc_subchannel *c, - grpc_pollset *pollset, - grpc_subchannel_call **target, - grpc_closure *notify) { +grpc_subchannel_call_create_status grpc_subchannel_create_call( + grpc_exec_ctx *exec_ctx, grpc_subchannel *c, grpc_pollset *pollset, + grpc_subchannel_call **target, grpc_closure *notify) { connection *con; gpr_mu_lock(&c->mu); if (c->active != NULL) { @@ -355,7 +357,7 @@ void grpc_subchannel_create_call(grpc_exec_ctx *exec_ctx, grpc_subchannel *c, gpr_mu_unlock(&c->mu); *target = create_call(exec_ctx, con); - notify->cb(exec_ctx, notify->cb_arg, 1); + return GRPC_SUBCHANNEL_CALL_CREATE_READY; } else { waiting_for_connect *w4c = gpr_malloc(sizeof(*w4c)); w4c->next = c->waiting; @@ -380,6 +382,7 @@ void grpc_subchannel_create_call(grpc_exec_ctx *exec_ctx, grpc_subchannel *c, } else { gpr_mu_unlock(&c->mu); } + return GRPC_SUBCHANNEL_CALL_CREATE_PENDING; } } diff --git a/src/core/client_config/subchannel.h b/src/core/client_config/subchannel.h index 86b7fa58513..a26d08f02ee 100644 --- a/src/core/client_config/subchannel.h +++ b/src/core/client_config/subchannel.h @@ -75,12 +75,22 @@ void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx, grpc_subchannel_call *call GRPC_SUBCHANNEL_REF_EXTRA_ARGS); -/** construct a call (possibly asynchronously) */ -void grpc_subchannel_create_call(grpc_exec_ctx *exec_ctx, - grpc_subchannel *subchannel, - grpc_pollset *pollset, - grpc_subchannel_call **target, - grpc_closure *notify); +typedef enum { + GRPC_SUBCHANNEL_CALL_CREATE_READY, + GRPC_SUBCHANNEL_CALL_CREATE_PENDING +} grpc_subchannel_call_create_status; + +/** construct a subchannel call (possibly asynchronously). + * + * If the returned status is \a GRPC_SUBCHANNEL_CALL_CREATE_READY, the call will + * return immediately and \a target will point to a connected \a subchannel_call + * instance. Note that \a notify will \em not be invoked in this case. + * Otherwise, if the returned status is GRPC_SUBCHANNEL_CALL_CREATE_PENDING, the + * subchannel call will be created asynchronously, invoking the \a notify + * callback upon completion. */ +grpc_subchannel_call_create_status grpc_subchannel_create_call( + grpc_exec_ctx *exec_ctx, grpc_subchannel *subchannel, grpc_pollset *pollset, + grpc_subchannel_call **target, grpc_closure *notify); /** process a transport level op */ void grpc_subchannel_process_transport_op(grpc_exec_ctx *exec_ctx, From 0ba432d445b6415e04b8b9f20cb093b0a22a4361 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 16:57:11 -0700 Subject: [PATCH 036/111] Move profiling system to gpr --- BUILD | 15 ++--- Makefile | 6 +- build.yaml | 6 +- gRPC.podspec | 12 ++-- grpc.gyp | 4 +- src/core/channel/client_channel.c | 8 +-- src/core/channel/compress_filter.c | 4 +- src/core/channel/http_client_filter.c | 4 +- src/core/channel/http_server_filter.c | 4 +- src/core/iomgr/exec_ctx.c | 8 +-- .../iomgr/pollset_multipoller_with_epoll.c | 4 +- src/core/iomgr/pollset_posix.c | 32 +++++----- src/core/iomgr/tcp_posix.c | 22 +++---- src/core/iomgr/wakeup_fd_eventfd.c | 6 +- src/core/profiling/basic_timers.c | 42 ++++++------ src/core/profiling/stap_timers.c | 16 ++--- src/core/profiling/timers.h | 48 +++++++------- src/core/support/alloc.c | 12 ++-- src/core/support/sync_posix.c | 8 +-- src/core/surface/call.c | 64 +++++++++---------- src/core/surface/completion_queue.c | 12 ++-- src/core/surface/init.c | 4 +- src/core/transport/chttp2/parsing.c | 4 +- src/core/transport/chttp2/writing.c | 4 +- src/core/transport/chttp2_transport.c | 24 +++---- src/core/transport/stream_op.c | 4 +- src/cpp/proto/proto_utils.cc | 4 +- src/cpp/server/server.cc | 4 +- test/core/profiling/timers_test.c | 10 +-- test/cpp/qps/client_sync.cc | 4 +- tools/doxygen/Doxyfile.core.internal | 6 +- tools/run_tests/sources_and_headers.json | 12 ++-- vsprojects/vcxproj/gpr/gpr.vcxproj | 5 ++ vsprojects/vcxproj/gpr/gpr.vcxproj.filters | 12 ++++ vsprojects/vcxproj/grpc/grpc.vcxproj | 5 -- vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 12 ---- .../grpc_unsecure/grpc_unsecure.vcxproj | 5 -- .../grpc_unsecure.vcxproj.filters | 12 ---- 38 files changed, 223 insertions(+), 245 deletions(-) diff --git a/BUILD b/BUILD index 7c01d6b0bbc..146e0b38647 100644 --- a/BUILD +++ b/BUILD @@ -44,6 +44,7 @@ package(default_visibility = ["//visibility:public"]) cc_library( name = "gpr", srcs = [ + "src/core/profiling/timers.h", "src/core/support/block_annotate.h", "src/core/support/env.h", "src/core/support/file.h", @@ -53,6 +54,8 @@ cc_library( "src/core/support/string_win32.h", "src/core/support/thd_internal.h", "src/core/support/time_precise.h", + "src/core/profiling/basic_timers.c", + "src/core/profiling/stap_timers.c", "src/core/support/alloc.c", "src/core/support/cmdline.c", "src/core/support/cpu_iphone.c", @@ -218,7 +221,6 @@ cc_library( "src/core/json/json_common.h", "src/core/json/json_reader.h", "src/core/json/json_writer.h", - "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", "src/core/surface/api_trace.h", @@ -356,8 +358,6 @@ cc_library( "src/core/json/json_reader.c", "src/core/json/json_string.c", "src/core/json/json_writer.c", - "src/core/profiling/basic_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_queue.c", @@ -504,7 +504,6 @@ cc_library( "src/core/json/json_common.h", "src/core/json/json_reader.h", "src/core/json/json_writer.h", - "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", "src/core/surface/api_trace.h", @@ -622,8 +621,6 @@ cc_library( "src/core/json/json_reader.c", "src/core/json/json_string.c", "src/core/json/json_writer.c", - "src/core/profiling/basic_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_queue.c", @@ -961,6 +958,8 @@ cc_library( objc_library( name = "gpr_objc", srcs = [ + "src/core/profiling/basic_timers.c", + "src/core/profiling/stap_timers.c", "src/core/support/alloc.c", "src/core/support/cmdline.c", "src/core/support/cpu_iphone.c", @@ -1028,6 +1027,7 @@ objc_library( "include/grpc/support/tls_msvc.h", "include/grpc/support/tls_pthread.h", "include/grpc/support/useful.h", + "src/core/profiling/timers.h", "src/core/support/block_annotate.h", "src/core/support/env.h", "src/core/support/file.h", @@ -1147,8 +1147,6 @@ objc_library( "src/core/json/json_reader.c", "src/core/json/json_string.c", "src/core/json/json_writer.c", - "src/core/profiling/basic_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_queue.c", @@ -1292,7 +1290,6 @@ objc_library( "src/core/json/json_common.h", "src/core/json/json_reader.h", "src/core/json/json_writer.h", - "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", "src/core/surface/api_trace.h", diff --git a/Makefile b/Makefile index 6d6dc71acce..788fdb52155 100644 --- a/Makefile +++ b/Makefile @@ -3893,6 +3893,8 @@ clean: LIBGPR_SRC = \ + src/core/profiling/basic_timers.c \ + src/core/profiling/stap_timers.c \ src/core/support/alloc.c \ src/core/support/cmdline.c \ src/core/support/cpu_iphone.c \ @@ -4118,8 +4120,6 @@ LIBGRPC_SRC = \ src/core/json/json_reader.c \ src/core/json/json_string.c \ src/core/json/json_writer.c \ - src/core/profiling/basic_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_queue.c \ @@ -4400,8 +4400,6 @@ LIBGRPC_UNSECURE_SRC = \ src/core/json/json_reader.c \ src/core/json/json_string.c \ src/core/json/json_writer.c \ - src/core/profiling/basic_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_queue.c \ diff --git a/build.yaml b/build.yaml index 503d7a80c75..0cba1730d1b 100644 --- a/build.yaml +++ b/build.yaml @@ -177,7 +177,6 @@ filegroups: - src/core/json/json_common.h - src/core/json/json_reader.h - src/core/json/json_writer.h - - src/core/profiling/timers.h - src/core/statistics/census_interface.h - src/core/statistics/census_rpc_stats.h - src/core/surface/api_trace.h @@ -292,8 +291,6 @@ filegroups: - src/core/json/json_reader.c - src/core/json/json_string.c - src/core/json/json_writer.c - - src/core/profiling/basic_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_queue.c @@ -392,6 +389,7 @@ libs: - include/grpc/support/tls_pthread.h - include/grpc/support/useful.h headers: + - src/core/profiling/timers.h - src/core/support/block_annotate.h - src/core/support/env.h - src/core/support/file.h @@ -402,6 +400,8 @@ libs: - src/core/support/thd_internal.h - src/core/support/time_precise.h src: + - src/core/profiling/basic_timers.c + - src/core/profiling/stap_timers.c - src/core/support/alloc.c - src/core/support/cmdline.c - src/core/support/cpu_iphone.c diff --git a/gRPC.podspec b/gRPC.podspec index 5b93281b417..12642b58693 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -63,7 +63,8 @@ Pod::Spec.new do |s| # Core cross-platform gRPC library, written in C. s.subspec 'C-Core' do |ss| - ss.source_files = 'src/core/support/block_annotate.h', + ss.source_files = 'src/core/profiling/timers.h', + 'src/core/support/block_annotate.h', 'src/core/support/env.h', 'src/core/support/file.h', 'src/core/support/murmur_hash.h', @@ -99,6 +100,8 @@ Pod::Spec.new do |s| 'grpc/support/tls_msvc.h', 'grpc/support/tls_pthread.h', 'grpc/support/useful.h', + 'src/core/profiling/basic_timers.c', + 'src/core/profiling/stap_timers.c', 'src/core/support/alloc.c', 'src/core/support/cmdline.c', 'src/core/support/cpu_iphone.c', @@ -222,7 +225,6 @@ Pod::Spec.new do |s| 'src/core/json/json_common.h', 'src/core/json/json_reader.h', 'src/core/json/json_writer.h', - 'src/core/profiling/timers.h', 'src/core/statistics/census_interface.h', 'src/core/statistics/census_rpc_stats.h', 'src/core/surface/api_trace.h', @@ -367,8 +369,6 @@ Pod::Spec.new do |s| 'src/core/json/json_reader.c', 'src/core/json/json_string.c', 'src/core/json/json_writer.c', - 'src/core/profiling/basic_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_queue.c', @@ -419,7 +419,8 @@ Pod::Spec.new do |s| 'src/core/census/operation.c', 'src/core/census/tracing.c' - ss.private_header_files = 'src/core/support/block_annotate.h', + ss.private_header_files = 'src/core/profiling/timers.h', + 'src/core/support/block_annotate.h', 'src/core/support/env.h', 'src/core/support/file.h', 'src/core/support/murmur_hash.h', @@ -513,7 +514,6 @@ Pod::Spec.new do |s| 'src/core/json/json_common.h', 'src/core/json/json_reader.h', 'src/core/json/json_writer.h', - 'src/core/profiling/timers.h', 'src/core/statistics/census_interface.h', 'src/core/statistics/census_rpc_stats.h', 'src/core/surface/api_trace.h', diff --git a/grpc.gyp b/grpc.gyp index 668a6e12f32..8bb148d57d8 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -94,6 +94,8 @@ 'dependencies': [ ], 'sources': [ + 'src/core/profiling/basic_timers.c', + 'src/core/profiling/stap_timers.c', 'src/core/support/alloc.c', 'src/core/support/cmdline.c', 'src/core/support/cpu_iphone.c', @@ -239,8 +241,6 @@ 'src/core/json/json_reader.c', 'src/core/json/json_string.c', 'src/core/json/json_writer.c', - 'src/core/profiling/basic_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_queue.c', diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c index 79c56580843..1bdba5b3c01 100644 --- a/src/core/channel/client_channel.c +++ b/src/core/channel/client_channel.c @@ -237,7 +237,7 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, call_data *calld = arg; grpc_pollset *pollset; - GRPC_TIMER_BEGIN("picked_target", 0); + GPR_TIMER_BEGIN("picked_target", 0); if (calld->picked_channel == NULL) { /* treat this like a cancellation */ @@ -260,7 +260,7 @@ static void picked_target(grpc_exec_ctx *exec_ctx, void *arg, } } - GRPC_TIMER_END("picked_target", 0); + GPR_TIMER_END("picked_target", 0); } static grpc_closure *merge_into_waiting_op(grpc_call_element *elem, @@ -321,7 +321,7 @@ static void perform_transport_stream_op(grpc_exec_ctx *exec_ctx, grpc_subchannel_call *subchannel_call; grpc_lb_policy *lb_policy; grpc_transport_stream_op op2; - GRPC_TIMER_BEGIN("perform_transport_stream_op", 0); + GPR_TIMER_BEGIN("perform_transport_stream_op", 0); GPR_ASSERT(elem->filter == &grpc_client_channel_filter); GRPC_CALL_LOG_OP(GPR_INFO, elem, op); @@ -434,7 +434,7 @@ static void perform_transport_stream_op(grpc_exec_ctx *exec_ctx, break; } - GRPC_TIMER_END("perform_transport_stream_op", 0); + GPR_TIMER_END("perform_transport_stream_op", 0); } static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx, diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c index 6c1ed2931fb..477e6075960 100644 --- a/src/core/channel/compress_filter.c +++ b/src/core/channel/compress_filter.c @@ -272,13 +272,13 @@ static void process_send_ops(grpc_call_element *elem, static void compress_start_transport_stream_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { - GRPC_TIMER_BEGIN("compress_start_transport_stream_op", 0); + GPR_TIMER_BEGIN("compress_start_transport_stream_op", 0); if (op->send_ops && op->send_ops->nops > 0) { process_send_ops(elem, op->send_ops); } - GRPC_TIMER_END("compress_start_transport_stream_op", 0); + GPR_TIMER_END("compress_start_transport_stream_op", 0); /* pass control down the stack */ grpc_call_next_op(exec_ctx, elem, op); diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c index 9a7f8c45be7..f78a5cc3159 100644 --- a/src/core/channel/http_client_filter.c +++ b/src/core/channel/http_client_filter.c @@ -163,10 +163,10 @@ static void hc_mutate_op(grpc_call_element *elem, static void hc_start_transport_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { - GRPC_TIMER_BEGIN("hc_start_transport_op", 0); + GPR_TIMER_BEGIN("hc_start_transport_op", 0); GRPC_CALL_LOG_OP(GPR_INFO, elem, op); hc_mutate_op(elem, op); - GRPC_TIMER_END("hc_start_transport_op", 0); + GPR_TIMER_END("hc_start_transport_op", 0); grpc_call_next_op(exec_ctx, elem, op); } diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c index 16a0c1d3ac0..99e5066a4ef 100644 --- a/src/core/channel/http_server_filter.c +++ b/src/core/channel/http_server_filter.c @@ -231,10 +231,10 @@ static void hs_start_transport_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, grpc_transport_stream_op *op) { GRPC_CALL_LOG_OP(GPR_INFO, elem, op); - GRPC_TIMER_BEGIN("hs_start_transport_op", 0); + GPR_TIMER_BEGIN("hs_start_transport_op", 0); hs_mutate_op(elem, op); grpc_call_next_op(exec_ctx, elem, op); - GRPC_TIMER_END("hs_start_transport_op", 0); + GPR_TIMER_END("hs_start_transport_op", 0); } /* Constructor for call_data */ diff --git a/src/core/iomgr/exec_ctx.c b/src/core/iomgr/exec_ctx.c index 1ad39885e43..410b34c5213 100644 --- a/src/core/iomgr/exec_ctx.c +++ b/src/core/iomgr/exec_ctx.c @@ -39,20 +39,20 @@ int grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { int did_something = 0; - GRPC_TIMER_BEGIN("grpc_exec_ctx_flush", 0); + GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); while (!grpc_closure_list_empty(exec_ctx->closure_list)) { grpc_closure *c = exec_ctx->closure_list.head; exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL; while (c != NULL) { grpc_closure *next = c->next; did_something++; - GRPC_TIMER_BEGIN("grpc_exec_ctx_flush.cb", 0); + GPR_TIMER_BEGIN("grpc_exec_ctx_flush.cb", 0); c->cb(exec_ctx, c->cb_arg, c->success); - GRPC_TIMER_END("grpc_exec_ctx_flush.cb", 0); + GPR_TIMER_END("grpc_exec_ctx_flush.cb", 0); c = next; } } - GRPC_TIMER_END("grpc_exec_ctx_flush", 0); + GPR_TIMER_END("grpc_exec_ctx_flush", 0); return did_something; } diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c index e8743918951..2aafd21dfb5 100644 --- a/src/core/iomgr/pollset_multipoller_with_epoll.c +++ b/src/core/iomgr/pollset_multipoller_with_epoll.c @@ -183,11 +183,11 @@ static void multipoll_with_epoll_pollset_maybe_work_and_unlock( /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid even going into the blocking annotation if possible */ - GRPC_TIMER_BEGIN("poll", 0); + GPR_TIMER_BEGIN("poll", 0); GRPC_SCHEDULING_START_BLOCKING_REGION; poll_rv = grpc_poll_function(pfds, 2, timeout_ms); GRPC_SCHEDULING_END_BLOCKING_REGION; - GRPC_TIMER_END("poll", 0); + GPR_TIMER_END("poll", 0); if (poll_rv < 0) { if (errno != EINTR) { diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 6c813bf27af..4d8bc5374f9 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -101,12 +101,12 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) { void grpc_pollset_kick_ext(grpc_pollset *p, grpc_pollset_worker *specific_worker, gpr_uint32 flags) { - GRPC_TIMER_BEGIN("grpc_pollset_kick_ext", 0); + GPR_TIMER_BEGIN("grpc_pollset_kick_ext", 0); /* pollset->mu already held */ if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { - GRPC_TIMER_BEGIN("grpc_pollset_kick_ext.broadcast", 0); + GPR_TIMER_BEGIN("grpc_pollset_kick_ext.broadcast", 0); GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); for (specific_worker = p->root_worker.next; specific_worker != &p->root_worker; @@ -114,16 +114,16 @@ void grpc_pollset_kick_ext(grpc_pollset *p, grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); } p->kicked_without_pollers = 1; - GRPC_TIMER_END("grpc_pollset_kick_ext.broadcast", 0); + GPR_TIMER_END("grpc_pollset_kick_ext.broadcast", 0); } else if (gpr_tls_get(&g_current_thread_worker) != (gpr_intptr)specific_worker) { - GRPC_TIMER_MARK("different_thread_worker", 0); + GPR_TIMER_MARK("different_thread_worker", 0); if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) { specific_worker->reevaluate_polling_on_wakeup = 1; } grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); } else if ((flags & GRPC_POLLSET_CAN_KICK_SELF) != 0) { - GRPC_TIMER_MARK("kick_yoself", 0); + GPR_TIMER_MARK("kick_yoself", 0); if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) { specific_worker->reevaluate_polling_on_wakeup = 1; } @@ -131,12 +131,12 @@ void grpc_pollset_kick_ext(grpc_pollset *p, } } else if (gpr_tls_get(&g_current_thread_poller) != (gpr_intptr)p) { GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0); - GRPC_TIMER_MARK("kick_anonymous", 0); + GPR_TIMER_MARK("kick_anonymous", 0); specific_worker = pop_front_worker(p); if (specific_worker != NULL) { if (gpr_tls_get(&g_current_thread_worker) == (gpr_intptr)specific_worker) { - GRPC_TIMER_MARK("kick_anonymous_not_self", 0); + GPR_TIMER_MARK("kick_anonymous_not_self", 0); push_back_worker(p, specific_worker); specific_worker = pop_front_worker(p); if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 && @@ -147,17 +147,17 @@ void grpc_pollset_kick_ext(grpc_pollset *p, } } if (specific_worker != NULL) { - GRPC_TIMER_MARK("finally_kick", 0); + GPR_TIMER_MARK("finally_kick", 0); push_back_worker(p, specific_worker); grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd); } } else { - GRPC_TIMER_MARK("kicked_no_pollers", 0); + GPR_TIMER_MARK("kicked_no_pollers", 0); p->kicked_without_pollers = 1; } } - GRPC_TIMER_END("grpc_pollset_kick_ext", 0); + GPR_TIMER_END("grpc_pollset_kick_ext", 0); } void grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { @@ -238,7 +238,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, int locked = 1; int queued_work = 0; int keep_polling = 0; - GRPC_TIMER_BEGIN("grpc_pollset_work", 0); + GPR_TIMER_BEGIN("grpc_pollset_work", 0); /* this must happen before we (potentially) drop pollset->mu */ worker->next = worker->prev = NULL; worker->reevaluate_polling_on_wakeup = 0; @@ -283,10 +283,10 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } gpr_tls_set(&g_current_thread_poller, (gpr_intptr)pollset); gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); - GRPC_TIMER_BEGIN("maybe_work_and_unlock", 0); + GPR_TIMER_BEGIN("maybe_work_and_unlock", 0); pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker, deadline, now); - GRPC_TIMER_END("maybe_work_and_unlock", 0); + GPR_TIMER_END("maybe_work_and_unlock", 0); locked = 0; gpr_tls_set(&g_current_thread_poller, 0); gpr_tls_set(&g_current_thread_worker, 0); @@ -341,7 +341,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_mu_lock(&pollset->mu); } } - GRPC_TIMER_END("grpc_pollset_work", 0); + GPR_TIMER_END("grpc_pollset_work", 0); } void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, @@ -576,11 +576,11 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx, even going into the blocking annotation if possible */ /* poll fd count (argument 2) is shortened by one if we have no events to poll on - such that it only includes the kicker */ - GRPC_TIMER_BEGIN("poll", 0); + GPR_TIMER_BEGIN("poll", 0); GRPC_SCHEDULING_START_BLOCKING_REGION; r = grpc_poll_function(pfd, nfds, timeout); GRPC_SCHEDULING_END_BLOCKING_REGION; - GRPC_TIMER_END("poll", 0); + GPR_TIMER_END("poll", 0); if (r < 0) { gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno)); diff --git a/src/core/iomgr/tcp_posix.c b/src/core/iomgr/tcp_posix.c index 9e3773bcd44..915553d5098 100644 --- a/src/core/iomgr/tcp_posix.c +++ b/src/core/iomgr/tcp_posix.c @@ -180,7 +180,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { GPR_ASSERT(!tcp->finished_edge); GPR_ASSERT(tcp->iov_size <= MAX_READ_IOVEC); GPR_ASSERT(tcp->incoming_buffer->count <= MAX_READ_IOVEC); - GRPC_TIMER_BEGIN("tcp_continue_read", 0); + GPR_TIMER_BEGIN("tcp_continue_read", 0); while (tcp->incoming_buffer->count < (size_t)tcp->iov_size) { gpr_slice_buffer_add_indexed(tcp->incoming_buffer, @@ -199,11 +199,11 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN("recvmsg", 1); + GPR_TIMER_BEGIN("recvmsg", 1); do { read_bytes = recvmsg(tcp->fd, &msg, 0); } while (read_bytes < 0 && errno == EINTR); - GRPC_TIMER_END("recvmsg", 0); + GPR_TIMER_END("recvmsg", 0); if (read_bytes < 0) { /* NB: After calling call_read_cb a parallel call of the read handler may @@ -240,7 +240,7 @@ static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { TCP_UNREF(exec_ctx, tcp, "read"); } - GRPC_TIMER_END("tcp_continue_read", 0); + GPR_TIMER_END("tcp_continue_read", 0); } static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, @@ -316,12 +316,12 @@ static flush_result tcp_flush(grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_TIMER_BEGIN("sendmsg", 1); + GPR_TIMER_BEGIN("sendmsg", 1); do { /* TODO(klempner): Cork if this is a partial write */ sent_length = sendmsg(tcp->fd, &msg, SENDMSG_FLAGS); } while (sent_length < 0 && errno == EINTR); - GRPC_TIMER_END("sendmsg", 0); + GPR_TIMER_END("sendmsg", 0); if (sent_length < 0) { if (errno == EAGAIN) { @@ -376,9 +376,9 @@ static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, } else { cb = tcp->write_cb; tcp->write_cb = NULL; - GRPC_TIMER_BEGIN("tcp_handle_write.cb", 0); + GPR_TIMER_BEGIN("tcp_handle_write.cb", 0); cb->cb(exec_ctx, cb->cb_arg, status == FLUSH_DONE); - GRPC_TIMER_END("tcp_handle_write.cb", 0); + GPR_TIMER_END("tcp_handle_write.cb", 0); TCP_UNREF(exec_ctx, tcp, "write"); } } @@ -399,11 +399,11 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, } } - GRPC_TIMER_BEGIN("tcp_write", 0); + GPR_TIMER_BEGIN("tcp_write", 0); GPR_ASSERT(tcp->write_cb == NULL); if (buf->length == 0) { - GRPC_TIMER_END("tcp_write", 0); + GPR_TIMER_END("tcp_write", 0); grpc_exec_ctx_enqueue(exec_ctx, cb, 1); return; } @@ -420,7 +420,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, grpc_exec_ctx_enqueue(exec_ctx, cb, status == FLUSH_DONE); } - GRPC_TIMER_END("tcp_write", 0); + GPR_TIMER_END("tcp_write", 0); } static void tcp_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, diff --git a/src/core/iomgr/wakeup_fd_eventfd.c b/src/core/iomgr/wakeup_fd_eventfd.c index 48eb1afb3d8..f67379e4fcf 100644 --- a/src/core/iomgr/wakeup_fd_eventfd.c +++ b/src/core/iomgr/wakeup_fd_eventfd.c @@ -39,9 +39,11 @@ #include #include -#include "src/core/iomgr/wakeup_fd_posix.h" #include +#include "src/core/iomgr/wakeup_fd_posix.h" +#include "src/core/profiling/timers.h" + static void eventfd_create(grpc_wakeup_fd* fd_info) { int efd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); /* TODO(klempner): Handle failure more gracefully */ @@ -60,9 +62,11 @@ static void eventfd_consume(grpc_wakeup_fd* fd_info) { static void eventfd_wakeup(grpc_wakeup_fd* fd_info) { int err; + GPR_TIMER_BEGIN("eventfd_wakeup", 0); do { err = eventfd_write(fd_info->read_fd, 1); } while (err < 0 && errno == EINTR); + GPR_TIMER_END("eventfd_wakeup", 0); } static void eventfd_destroy(grpc_wakeup_fd* fd_info) { diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c index 8a68277cca2..b49cdd07b3e 100644 --- a/src/core/profiling/basic_timers.c +++ b/src/core/profiling/basic_timers.c @@ -46,18 +46,18 @@ typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type; -typedef struct grpc_timer_entry { +typedef struct gpr_timer_entry { gpr_timespec tm; const char *tagstr; const char *file; int line; char type; gpr_uint8 important; -} grpc_timer_entry; +} gpr_timer_entry; -#define MAX_COUNT (1024 * 1024 / sizeof(grpc_timer_entry)) +#define MAX_COUNT (1024 * 1024 / sizeof(gpr_timer_entry)) -static __thread grpc_timer_entry g_log[MAX_COUNT]; +static __thread gpr_timer_entry g_log[MAX_COUNT]; static __thread int g_count; static gpr_once g_once_init = GPR_ONCE_INIT; static FILE *output_file; @@ -74,7 +74,7 @@ static void log_report() { int i; gpr_once_init(&g_once_init, init_output); for (i = 0; i < g_count; i++) { - grpc_timer_entry *entry = &(g_log[i]); + gpr_timer_entry *entry = &(g_log[i]); fprintf(output_file, "{\"t\": %ld.%09d, \"thd\": \"%p\", \"type\": \"%c\", \"tag\": " "\"%s\", \"file\": \"%s\", \"line\": %d, \"imp\": %d}\n", @@ -87,9 +87,9 @@ static void log_report() { g_count = 0; } -static void grpc_timers_log_add(const char *tagstr, marker_type type, - int important, const char *file, int line) { - grpc_timer_entry *entry; +static void gpr_timers_log_add(const char *tagstr, marker_type type, + int important, const char *file, int line) { + gpr_timer_entry *entry; /* TODO (vpai) : Improve concurrency */ if (g_count == MAX_COUNT) { @@ -107,28 +107,28 @@ static void grpc_timers_log_add(const char *tagstr, marker_type type, } /* Latency profiler API implementation. */ -void grpc_timer_add_mark(const char *tagstr, int important, const char *file, - int line) { - grpc_timers_log_add(tagstr, MARK, important, file, line); +void gpr_timer_add_mark(const char *tagstr, int important, const char *file, + int line) { + gpr_timers_log_add(tagstr, MARK, important, file, line); } -void grpc_timer_begin(const char *tagstr, int important, const char *file, - int line) { - grpc_timers_log_add(tagstr, BEGIN, important, file, line); +void gpr_timer_begin(const char *tagstr, int important, const char *file, + int line) { + gpr_timers_log_add(tagstr, BEGIN, important, file, line); } -void grpc_timer_end(const char *tagstr, int important, const char *file, - int line) { - grpc_timers_log_add(tagstr, END, important, file, line); +void gpr_timer_end(const char *tagstr, int important, const char *file, + int line) { + gpr_timers_log_add(tagstr, END, important, file, line); } /* Basic profiler specific API functions. */ -void grpc_timers_global_init(void) {} +void gpr_timers_global_init(void) {} -void grpc_timers_global_destroy(void) {} +void gpr_timers_global_destroy(void) {} #else /* !GRPC_BASIC_PROFILER */ -void grpc_timers_global_init(void) {} +void gpr_timers_global_init(void) {} -void grpc_timers_global_destroy(void) {} +void gpr_timers_global_destroy(void) {} #endif /* GRPC_BASIC_PROFILER */ diff --git a/src/core/profiling/stap_timers.c b/src/core/profiling/stap_timers.c index 6868a674a98..efcd1af4a1c 100644 --- a/src/core/profiling/stap_timers.c +++ b/src/core/profiling/stap_timers.c @@ -42,23 +42,23 @@ #include "src/core/profiling/stap_probes.h" /* Latency profiler API implementation. */ -void grpc_timer_add_mark(int tag, const char *tagstr, void *id, - const char *file, int line) { +void gpr_timer_add_mark(int tag, const char *tagstr, void *id, const char *file, + int line) { _STAP_ADD_MARK(tag); } -void grpc_timer_add_important_mark(int tag, const char *tagstr, void *id, - const char *file, int line) { +void gpr_timer_add_important_mark(int tag, const char *tagstr, void *id, + const char *file, int line) { _STAP_ADD_IMPORTANT_MARK(tag); } -void grpc_timer_begin(int tag, const char *tagstr, void *id, const char *file, - int line) { +void gpr_timer_begin(int tag, const char *tagstr, void *id, const char *file, + int line) { _STAP_TIMING_NS_BEGIN(tag); } -void grpc_timer_end(int tag, const char *tagstr, void *id, const char *file, - int line) { +void gpr_timer_end(int tag, const char *tagstr, void *id, const char *file, + int line) { _STAP_TIMING_NS_END(tag); } diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 94251fbcf54..1ea7f71dc36 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -38,28 +38,28 @@ extern "C" { #endif -void grpc_timers_global_init(void); -void grpc_timers_global_destroy(void); +void gpr_timers_global_init(void); +void gpr_timers_global_destroy(void); -void grpc_timer_add_mark(const char *tagstr, int important, const char *file, - int line); -void grpc_timer_begin(const char *tagstr, int important, const char *file, - int line); -void grpc_timer_end(const char *tagstr, int important, const char *file, - int line); +void gpr_timer_add_mark(const char *tagstr, int important, const char *file, + int line); +void gpr_timer_begin(const char *tagstr, int important, const char *file, + int line); +void gpr_timer_end(const char *tagstr, int important, const char *file, + int line); #if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER)) /* No profiling. No-op all the things. */ -#define GRPC_TIMER_MARK(tag, important) \ - do { \ +#define GPR_TIMER_MARK(tag, important) \ + do { \ } while (0) -#define GRPC_TIMER_BEGIN(tag, important) \ - do { \ +#define GPR_TIMER_BEGIN(tag, important) \ + do { \ } while (0) -#define GRPC_TIMER_END(tag, important) \ - do { \ +#define GPR_TIMER_END(tag, important) \ + do { \ } while (0) #else /* at least one profiler requested... */ @@ -69,14 +69,14 @@ void grpc_timer_end(const char *tagstr, int important, const char *file, #endif /* Generic profiling interface. */ -#define GRPC_TIMER_MARK(tag, important) \ - grpc_timer_add_mark(tag, important, __FILE__, __LINE__); +#define GPR_TIMER_MARK(tag, important) \ + gpr_timer_add_mark(tag, important, __FILE__, __LINE__); -#define GRPC_TIMER_BEGIN(tag, important) \ - grpc_timer_begin(tag, important, __FILE__, __LINE__); +#define GPR_TIMER_BEGIN(tag, important) \ + gpr_timer_begin(tag, important, __FILE__, __LINE__); -#define GRPC_TIMER_END(tag, important) \ - grpc_timer_end(tag, important, __FILE__, __LINE__); +#define GPR_TIMER_END(tag, important) \ + gpr_timer_end(tag, important, __FILE__, __LINE__); #ifdef GRPC_STAP_PROFILER /* Empty placeholder for now. */ @@ -95,17 +95,17 @@ namespace grpc { class ProfileScope { public: ProfileScope(const char *desc, bool important) : desc_(desc) { - GRPC_TIMER_BEGIN(desc_, important ? 1 : 0); + GPR_TIMER_BEGIN(desc_, important ? 1 : 0); } - ~ProfileScope() { GRPC_TIMER_END(desc_, 0); } + ~ProfileScope() { GPR_TIMER_END(desc_, 0); } private: const char *const desc_; }; } -#define GRPC_TIMER_SCOPE(tag, important) \ - ProfileScope _profile_scope_##__LINE__((tag), (important)) +#define GPR_TIMER_SCOPE(tag, important) \ + ::grpc::ProfileScope _profile_scope_##__LINE__((tag), (important)) #endif #endif /* GRPC_CORE_PROFILING_TIMERS_H */ diff --git a/src/core/support/alloc.c b/src/core/support/alloc.c index beb0e780d0c..bfcb77956b3 100644 --- a/src/core/support/alloc.c +++ b/src/core/support/alloc.c @@ -39,28 +39,28 @@ void *gpr_malloc(size_t size) { void *p; - GRPC_TIMER_BEGIN("gpr_malloc", 0); + GPR_TIMER_BEGIN("gpr_malloc", 0); p = malloc(size); if (!p) { abort(); } - GRPC_TIMER_END("gpr_malloc", 0); + GPR_TIMER_END("gpr_malloc", 0); return p; } void gpr_free(void *p) { - GRPC_TIMER_BEGIN("gpr_free", 0); + GPR_TIMER_BEGIN("gpr_free", 0); free(p); - GRPC_TIMER_END("gpr_free", 0); + GPR_TIMER_END("gpr_free", 0); } void *gpr_realloc(void *p, size_t size) { - GRPC_TIMER_BEGIN("gpr_realloc", 0); + GPR_TIMER_BEGIN("gpr_realloc", 0); p = realloc(p, size); if (!p) { abort(); } - GRPC_TIMER_END("gpr_realloc", 0); + GPR_TIMER_END("gpr_realloc", 0); return p; } diff --git a/src/core/support/sync_posix.c b/src/core/support/sync_posix.c index f356bec9846..39c96feb137 100644 --- a/src/core/support/sync_posix.c +++ b/src/core/support/sync_posix.c @@ -47,15 +47,15 @@ void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); } void gpr_mu_destroy(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_destroy(mu) == 0); } void gpr_mu_lock(gpr_mu* mu) { - GRPC_TIMER_BEGIN("gpr_mu_lock", 0); + GPR_TIMER_BEGIN("gpr_mu_lock", 0); GPR_ASSERT(pthread_mutex_lock(mu) == 0); - GRPC_TIMER_END("gpr_mu_lock", 0); + GPR_TIMER_END("gpr_mu_lock", 0); } void gpr_mu_unlock(gpr_mu* mu) { - GRPC_TIMER_BEGIN("gpr_mu_unlock", 0); + GPR_TIMER_BEGIN("gpr_mu_unlock", 0); GPR_ASSERT(pthread_mutex_unlock(mu) == 0); - GRPC_TIMER_END("gpr_mu_unlock", 0); + GPR_TIMER_END("gpr_mu_unlock", 0); } int gpr_mu_trylock(gpr_mu* mu) { diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 73c526022d1..9efcb90a56b 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -307,7 +307,7 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call, grpc_channel_stack *channel_stack = grpc_channel_get_channel_stack(channel); grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_call *call; - GRPC_TIMER_BEGIN("grpc_call_create", 0); + GPR_TIMER_BEGIN("grpc_call_create", 0); call = gpr_malloc(sizeof(grpc_call) + channel_stack->call_stack_size); memset(call, 0, sizeof(grpc_call)); gpr_mu_init(&call->mu); @@ -402,7 +402,7 @@ grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call, set_deadline_alarm(&exec_ctx, call, send_deadline); } grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END("grpc_call_create", 0); + GPR_TIMER_END("grpc_call_create", 0); return call; } @@ -464,7 +464,7 @@ void grpc_call_internal_ref(grpc_call *c) { static void destroy_call(grpc_exec_ctx *exec_ctx, grpc_call *call) { size_t i; grpc_call *c = call; - GRPC_TIMER_BEGIN("destroy_call", 0); + GPR_TIMER_BEGIN("destroy_call", 0); grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c)); GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call"); gpr_mu_destroy(&c->mu); @@ -497,7 +497,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, grpc_call *call) { GRPC_CQ_INTERNAL_UNREF(c->cq, "bind"); } gpr_free(c); - GRPC_TIMER_END("destroy_call", 0); + GPR_TIMER_END("destroy_call", 0); } #ifdef GRPC_CALL_REF_COUNT_DEBUG @@ -617,7 +617,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { const size_t MAX_RECV_PEEK_AHEAD = 65536; size_t buffered_bytes; - GRPC_TIMER_BEGIN("unlock", 0); + GPR_TIMER_BEGIN("unlock", 0); memset(&op, 0, sizeof(op)); @@ -690,7 +690,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_call *call) { GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completing"); } - GRPC_TIMER_END("unlock", 0); + GPR_TIMER_END("unlock", 0); } static void get_final_status(grpc_call *call, grpc_ioreq_data out) { @@ -840,7 +840,7 @@ static void early_out_write_ops(grpc_call *call) { static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { grpc_call *call = pc; - GRPC_TIMER_BEGIN("call_on_done_send", 0); + GPR_TIMER_BEGIN("call_on_done_send", 0); lock(call); if (call->last_send_contains & (1 << GRPC_IOREQ_SEND_INITIAL_METADATA)) { finish_ioreq_op(call, GRPC_IOREQ_SEND_INITIAL_METADATA, success); @@ -864,11 +864,11 @@ static void call_on_done_send(grpc_exec_ctx *exec_ctx, void *pc, int success) { call->sending = 0; unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "sending"); - GRPC_TIMER_END("call_on_done_send", 0); + GPR_TIMER_END("call_on_done_send", 0); } static void finish_message(grpc_call *call) { - GRPC_TIMER_BEGIN("finish_message", 0); + GPR_TIMER_BEGIN("finish_message", 0); if (call->error_status_set == 0) { /* TODO(ctiller): this could be a lot faster if coded directly */ grpc_byte_buffer *byte_buffer; @@ -888,7 +888,7 @@ static void finish_message(grpc_call *call) { gpr_slice_buffer_reset_and_unref(&call->incoming_message); GPR_ASSERT(call->incoming_message.count == 0); call->reading_message = 0; - GRPC_TIMER_END("finish_message", 0); + GPR_TIMER_END("finish_message", 0); } static int begin_message(grpc_call *call, grpc_begin_message msg) { @@ -978,7 +978,7 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { grpc_call *child_call; grpc_call *next_child_call; size_t i; - GRPC_TIMER_BEGIN("call_on_done_recv", 0); + GPR_TIMER_BEGIN("call_on_done_recv", 0); lock(call); call->receiving = 0; if (success) { @@ -988,19 +988,19 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { case GRPC_NO_OP: break; case GRPC_OP_METADATA: - GRPC_TIMER_BEGIN("recv_metadata", 0); + GPR_TIMER_BEGIN("recv_metadata", 0); recv_metadata(exec_ctx, call, &op->data.metadata); - GRPC_TIMER_END("recv_metadata", 0); + GPR_TIMER_END("recv_metadata", 0); break; case GRPC_OP_BEGIN_MESSAGE: - GRPC_TIMER_BEGIN("begin_message", 0); + GPR_TIMER_BEGIN("begin_message", 0); success = begin_message(call, op->data.begin_message); - GRPC_TIMER_END("begin_message", 0); + GPR_TIMER_END("begin_message", 0); break; case GRPC_OP_SLICE: - GRPC_TIMER_BEGIN("add_slice_to_message", 0); + GPR_TIMER_BEGIN("add_slice_to_message", 0); success = add_slice_to_message(call, op->data.slice); - GRPC_TIMER_END("add_slice_to_message", 0); + GPR_TIMER_END("add_slice_to_message", 0); break; } } @@ -1046,7 +1046,7 @@ static void call_on_done_recv(grpc_exec_ctx *exec_ctx, void *pc, int success) { unlock(exec_ctx, call); GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "receiving"); - GRPC_TIMER_END("call_on_done_recv", 0); + GPR_TIMER_END("call_on_done_recv", 0); } static int prepare_application_metadata(grpc_call *call, size_t count, @@ -1524,25 +1524,25 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, grpc_mdelem *mdel = l->md; grpc_mdstr *key = mdel->key; if (key == grpc_channel_get_status_string(call->channel)) { - GRPC_TIMER_BEGIN("status", 0); + GPR_TIMER_BEGIN("status", 0); set_status_code(call, STATUS_FROM_WIRE, decode_status(mdel)); - GRPC_TIMER_END("status", 0); + GPR_TIMER_END("status", 0); } else if (key == grpc_channel_get_message_string(call->channel)) { - GRPC_TIMER_BEGIN("status-details", 0); + GPR_TIMER_BEGIN("status-details", 0); set_status_details(call, STATUS_FROM_WIRE, GRPC_MDSTR_REF(mdel->value)); - GRPC_TIMER_END("status-details", 0); + GPR_TIMER_END("status-details", 0); } else if (key == grpc_channel_get_compression_algorithm_string(call->channel)) { - GRPC_TIMER_BEGIN("compression_algorithm", 0); + GPR_TIMER_BEGIN("compression_algorithm", 0); set_compression_algorithm(call, decode_compression(mdel)); - GRPC_TIMER_END("compression_algorithm", 0); + GPR_TIMER_END("compression_algorithm", 0); } else if (key == grpc_channel_get_encodings_accepted_by_peer_string( call->channel)) { - GRPC_TIMER_BEGIN("encodings_accepted_by_peer", 0); + GPR_TIMER_BEGIN("encodings_accepted_by_peer", 0); set_encodings_accepted_by_peer(call, mdel->value->slice); - GRPC_TIMER_END("encodings_accepted_by_peer", 0); + GPR_TIMER_END("encodings_accepted_by_peer", 0); } else { - GRPC_TIMER_BEGIN("report_up", 0); + GPR_TIMER_BEGIN("report_up", 0); dest = &call->buffered_metadata[is_trailing]; if (dest->count == dest->capacity) { dest->capacity = GPR_MAX(dest->capacity + 8, dest->capacity * 2); @@ -1563,15 +1563,15 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, } call->owned_metadata[call->owned_metadata_count++] = mdel; l->md = NULL; - GRPC_TIMER_END("report_up", 0); + GPR_TIMER_END("report_up", 0); } } if (gpr_time_cmp(md->deadline, gpr_inf_future(md->deadline.clock_type)) != 0 && !call->is_client) { - GRPC_TIMER_BEGIN("set_deadline_alarm", 0); + GPR_TIMER_BEGIN("set_deadline_alarm", 0); set_deadline_alarm(exec_ctx, call, md->deadline); - GRPC_TIMER_END("set_deadline_alarm", 0); + GPR_TIMER_END("set_deadline_alarm", 0); } if (!is_trailing) { call->read_state = READ_STATE_GOT_INITIAL_METADATA; @@ -1634,7 +1634,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, grpc_call_error error; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN("grpc_call_start_batch", 0); + GPR_TIMER_BEGIN("grpc_call_start_batch", 0); GRPC_API_TRACE( "grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, reserved=%p)", @@ -1873,7 +1873,7 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, finish_func, tag); done: grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END("grpc_call_start_batch", 0); + GPR_TIMER_END("grpc_call_start_batch", 0); return error; } diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c index 7c0183257ca..bc32f554738 100644 --- a/src/core/surface/completion_queue.c +++ b/src/core/surface/completion_queue.c @@ -144,7 +144,7 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, int i; grpc_pollset_worker *pluck_worker; - GRPC_TIMER_BEGIN("grpc_cq_end_op", 0); + GPR_TIMER_BEGIN("grpc_cq_end_op", 0); storage->tag = tag; storage->done = done; @@ -178,7 +178,7 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, grpc_pollset_shutdown(exec_ctx, &cc->pollset, &cc->pollset_destroy_done); } - GRPC_TIMER_END("grpc_cq_end_op", 0); + GPR_TIMER_END("grpc_cq_end_op", 0); } grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, @@ -189,7 +189,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, gpr_timespec now; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN("grpc_completion_queue_next", 0); + GPR_TIMER_BEGIN("grpc_completion_queue_next", 0); GRPC_API_TRACE( "grpc_completion_queue_next(" @@ -238,7 +238,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc, GRPC_CQ_INTERNAL_UNREF(cc, "next"); grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END("grpc_completion_queue_next", 0); + GPR_TIMER_END("grpc_completion_queue_next", 0); return ret; } @@ -278,7 +278,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag, int first_loop = 1; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_TIMER_BEGIN("grpc_completion_queue_pluck", 0); + GPR_TIMER_BEGIN("grpc_completion_queue_pluck", 0); GRPC_API_TRACE( "grpc_completion_queue_pluck(" @@ -346,7 +346,7 @@ done: GRPC_CQ_INTERNAL_UNREF(cc, "pluck"); grpc_exec_ctx_finish(&exec_ctx); - GRPC_TIMER_END("grpc_completion_queue_pluck", 0); + GPR_TIMER_END("grpc_completion_queue_pluck", 0); return ret; } diff --git a/src/core/surface/init.c b/src/core/surface/init.c index 95011cab178..715c90a5e1d 100644 --- a/src/core/surface/init.c +++ b/src/core/surface/init.c @@ -115,7 +115,7 @@ void grpc_init(void) { gpr_log(GPR_ERROR, "Could not initialize census."); } } - grpc_timers_global_init(); + gpr_timers_global_init(); for (i = 0; i < g_number_of_plugins; i++) { if (g_all_of_the_plugins[i].init != NULL) { g_all_of_the_plugins[i].init(); @@ -133,7 +133,7 @@ void grpc_shutdown(void) { if (--g_initializations == 0) { grpc_iomgr_shutdown(); census_shutdown(); - grpc_timers_global_destroy(); + gpr_timers_global_destroy(); grpc_tracer_shutdown(); grpc_resolver_registry_shutdown(); for (i = 0; i < g_number_of_plugins; i++) { diff --git a/src/core/transport/chttp2/parsing.c b/src/core/transport/chttp2/parsing.c index e71d4fc87aa..04e48032273 100644 --- a/src/core/transport/chttp2/parsing.c +++ b/src/core/transport/chttp2/parsing.c @@ -69,7 +69,7 @@ void grpc_chttp2_prepare_to_read( grpc_chttp2_stream_global *stream_global; grpc_chttp2_stream_parsing *stream_parsing; - GRPC_TIMER_BEGIN("grpc_chttp2_prepare_to_read", 0); + GPR_TIMER_BEGIN("grpc_chttp2_prepare_to_read", 0); transport_parsing->next_stream_id = transport_global->next_stream_id; @@ -93,7 +93,7 @@ void grpc_chttp2_prepare_to_read( } } - GRPC_TIMER_END("grpc_chttp2_prepare_to_read", 0); + GPR_TIMER_END("grpc_chttp2_prepare_to_read", 0); } void grpc_chttp2_publish_reads( diff --git a/src/core/transport/chttp2/writing.c b/src/core/transport/chttp2/writing.c index 4abe00bb7cf..69ad8854ba6 100644 --- a/src/core/transport/chttp2/writing.c +++ b/src/core/transport/chttp2/writing.c @@ -181,7 +181,7 @@ void grpc_chttp2_perform_writes( static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) { grpc_chttp2_stream_writing *stream_writing; - GRPC_TIMER_BEGIN("finalize_outbuf", 0); + GPR_TIMER_BEGIN("finalize_outbuf", 0); while ( grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) { @@ -212,7 +212,7 @@ static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) { grpc_chttp2_list_add_written_stream(transport_writing, stream_writing); } - GRPC_TIMER_END("finalize_outbuf", 0); + GPR_TIMER_END("finalize_outbuf", 0); } void grpc_chttp2_cleanup_writing( diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index d39816b0117..effc3c4b3be 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -510,7 +510,7 @@ grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream( static void lock(grpc_chttp2_transport *t) { gpr_mu_lock(&t->mu); } static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) { - GRPC_TIMER_BEGIN("unlock", 0); + GPR_TIMER_BEGIN("unlock", 0); unlock_check_read_write_state(exec_ctx, t); if (!t->writing_active && !t->closed && grpc_chttp2_unlocking_check_writes(&t->global, &t->writing)) { @@ -521,7 +521,7 @@ static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) { } gpr_mu_unlock(&t->mu); - GRPC_TIMER_END("unlock", 0); + GPR_TIMER_END("unlock", 0); } /* @@ -548,7 +548,7 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_writing *transport_writing = transport_writing_ptr; grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing); - GRPC_TIMER_BEGIN("grpc_chttp2_terminate_writing", 0); + GPR_TIMER_BEGIN("grpc_chttp2_terminate_writing", 0); lock(t); @@ -572,15 +572,15 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx, UNREF_TRANSPORT(exec_ctx, t, "writing"); - GRPC_TIMER_END("grpc_chttp2_terminate_writing", 0); + GPR_TIMER_END("grpc_chttp2_terminate_writing", 0); } static void writing_action(grpc_exec_ctx *exec_ctx, void *gt, int iomgr_success_ignored) { grpc_chttp2_transport *t = gt; - GRPC_TIMER_BEGIN("writing_action", 0); + GPR_TIMER_BEGIN("writing_action", 0); grpc_chttp2_perform_writes(exec_ctx, &t->writing, t->ep); - GRPC_TIMER_END("writing_action", 0); + GPR_TIMER_END("writing_action", 0); } void grpc_chttp2_add_incoming_goaway( @@ -650,7 +650,7 @@ static void maybe_start_some_streams( static void perform_stream_op_locked( grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global, grpc_chttp2_stream_global *stream_global, grpc_transport_stream_op *op) { - GRPC_TIMER_BEGIN("perform_stream_op_locked", 0); + GPR_TIMER_BEGIN("perform_stream_op_locked", 0); if (op->cancel_with_status != GRPC_STATUS_OK) { cancel_from_api(transport_global, stream_global, op->cancel_with_status); } @@ -722,7 +722,7 @@ static void perform_stream_op_locked( } grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, 1); - GRPC_TIMER_END("perform_stream_op_locked", 0); + GPR_TIMER_END("perform_stream_op_locked", 0); } static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, @@ -1113,7 +1113,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { int keep_reading = 0; grpc_chttp2_transport *t = tp; - GRPC_TIMER_BEGIN("recv_data", 0); + GPR_TIMER_BEGIN("recv_data", 0); lock(t); i = 0; @@ -1125,13 +1125,13 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { &t->parsing_stream_map); grpc_chttp2_prepare_to_read(&t->global, &t->parsing); gpr_mu_unlock(&t->mu); - GRPC_TIMER_BEGIN("recv_data.parse", 0); + GPR_TIMER_BEGIN("recv_data.parse", 0); for (; i < t->read_buffer.count && grpc_chttp2_perform_read(exec_ctx, &t->parsing, t->read_buffer.slices[i]); i++) ; - GRPC_TIMER_END("recv_data.parse", 0); + GPR_TIMER_END("recv_data.parse", 0); gpr_mu_lock(&t->mu); if (i != t->read_buffer.count) { drop_connection(exec_ctx, t); @@ -1169,7 +1169,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) { UNREF_TRANSPORT(exec_ctx, t, "recv_data"); } - GRPC_TIMER_END("recv_data", 0); + GPR_TIMER_END("recv_data", 0); } /* diff --git a/src/core/transport/stream_op.c b/src/core/transport/stream_op.c index 5c3c90b0541..6493e77bc51 100644 --- a/src/core/transport/stream_op.c +++ b/src/core/transport/stream_op.c @@ -302,7 +302,7 @@ void grpc_metadata_batch_filter(grpc_metadata_batch *batch, grpc_linked_mdelem *l; grpc_linked_mdelem *next; - GRPC_TIMER_BEGIN("grpc_metadata_batch_filter", 0); + GPR_TIMER_BEGIN("grpc_metadata_batch_filter", 0); assert_valid_list(&batch->list); assert_valid_list(&batch->garbage); @@ -333,5 +333,5 @@ void grpc_metadata_batch_filter(grpc_metadata_batch *batch, assert_valid_list(&batch->list); assert_valid_list(&batch->garbage); - GRPC_TIMER_END("grpc_metadata_batch_filter", 0); + GPR_TIMER_END("grpc_metadata_batch_filter", 0); } diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index a7b6fd241b5..b1330fde7f6 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -160,7 +160,7 @@ namespace grpc { Status SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** bp) { - GRPC_TIMER_SCOPE("SerializeProto", 0); + GPR_TIMER_SCOPE("SerializeProto", 0); int byte_size = msg.ByteSize(); if (byte_size <= kMaxBufferLength) { gpr_slice slice = gpr_slice_malloc(byte_size); @@ -179,7 +179,7 @@ Status SerializeProto(const grpc::protobuf::Message& msg, Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, int max_message_size) { - GRPC_TIMER_SCOPE("DeserializeProto", 0); + GPR_TIMER_SCOPE("DeserializeProto", 0); if (!buffer) { return Status(StatusCode::INTERNAL, "No payload"); } diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 2cd1905a97d..aacc5c7387c 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -541,7 +541,7 @@ void Server::ScheduleCallback() { void Server::RunRpc() { // Wait for one more incoming rpc. bool ok; - GRPC_TIMER_SCOPE("Server::RunRpc", 0); + GPR_TIMER_SCOPE("Server::RunRpc", 0); auto* mrd = SyncRequest::Wait(&cq_, &ok); if (mrd) { ScheduleCallback(); @@ -557,7 +557,7 @@ void Server::RunRpc() { mrd->TeardownRequest(); } } - GRPC_TIMER_SCOPE("cd.Run()", 0); + GPR_TIMER_SCOPE("cd.Run()", 0); cd.Run(); } } diff --git a/test/core/profiling/timers_test.c b/test/core/profiling/timers_test.c index b79cde64bdb..7070fe465f1 100644 --- a/test/core/profiling/timers_test.c +++ b/test/core/profiling/timers_test.c @@ -54,15 +54,15 @@ void test_log_events(size_t num_seqs) { for (j = 0; j < advance; j++) { switch (state[i]) { case 0: - GRPC_TIMER_MARK(STATE_0, i); + GPR_TIMER_MARK(STATE_0, i); state[i]++; break; case 1: - GRPC_TIMER_MARK(STATE_1, i); + GPR_TIMER_MARK(STATE_1, i); state[i]++; break; case 2: - GRPC_TIMER_MARK(STATE_2, i); + GPR_TIMER_MARK(STATE_2, i); state[i]++; break; case 3: @@ -76,8 +76,8 @@ void test_log_events(size_t num_seqs) { int main(int argc, char **argv) { grpc_test_init(argc, argv); - grpc_timers_global_init(); + gpr_timers_global_init(); test_log_events(1000000); - grpc_timers_global_destroy(); + gpr_timers_global_destroy(); return 0; } diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc index 6adf92a005c..3c33a1c5de4 100644 --- a/test/cpp/qps/client_sync.cc +++ b/test/cpp/qps/client_sync.cc @@ -101,7 +101,7 @@ class SynchronousUnaryClient GRPC_FINAL : public SynchronousClient { WaitToIssue(thread_idx); auto* stub = channels_[thread_idx % channels_.size()].get_stub(); double start = Timer::Now(); - GRPC_TIMER_SCOPE("SynchronousUnaryClient::ThreadFunc", 0); + GPR_TIMER_SCOPE("SynchronousUnaryClient::ThreadFunc", 0); grpc::ClientContext context; grpc::Status s = stub->UnaryCall(&context, request_, &responses_[thread_idx]); @@ -138,7 +138,7 @@ class SynchronousStreamingClient GRPC_FINAL : public SynchronousClient { bool ThreadFunc(Histogram* histogram, size_t thread_idx) GRPC_OVERRIDE { WaitToIssue(thread_idx); - GRPC_TIMER_SCOPE("SynchronousStreamingClient::ThreadFunc", 0); + GPR_TIMER_SCOPE("SynchronousStreamingClient::ThreadFunc", 0); double start = Timer::Now(); if (stream_[thread_idx]->Write(request_) && stream_[thread_idx]->Read(&responses_[thread_idx])) { diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 98d56f21eee..e742ec25713 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -852,7 +852,6 @@ src/core/json/json.h \ src/core/json/json_common.h \ src/core/json/json_reader.h \ src/core/json/json_writer.h \ -src/core/profiling/timers.h \ src/core/statistics/census_interface.h \ src/core/statistics/census_rpc_stats.h \ src/core/surface/api_trace.h \ @@ -990,8 +989,6 @@ src/core/json/json.c \ src/core/json/json_reader.c \ src/core/json/json_string.c \ src/core/json/json_writer.c \ -src/core/profiling/basic_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_queue.c \ @@ -1068,6 +1065,7 @@ include/grpc/support/tls_gcc.h \ include/grpc/support/tls_msvc.h \ include/grpc/support/tls_pthread.h \ include/grpc/support/useful.h \ +src/core/profiling/timers.h \ src/core/support/block_annotate.h \ src/core/support/env.h \ src/core/support/file.h \ @@ -1077,6 +1075,8 @@ src/core/support/string.h \ src/core/support/string_win32.h \ src/core/support/thd_internal.h \ src/core/support/time_precise.h \ +src/core/profiling/basic_timers.c \ +src/core/profiling/stap_timers.c \ src/core/support/alloc.c \ src/core/support/cmdline.c \ src/core/support/cpu_iphone.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index f2237e0fef7..c16477ccf84 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -12161,6 +12161,7 @@ "include/grpc/support/tls_msvc.h", "include/grpc/support/tls_pthread.h", "include/grpc/support/useful.h", + "src/core/profiling/timers.h", "src/core/support/block_annotate.h", "src/core/support/env.h", "src/core/support/file.h", @@ -12201,6 +12202,9 @@ "include/grpc/support/tls_msvc.h", "include/grpc/support/tls_pthread.h", "include/grpc/support/useful.h", + "src/core/profiling/basic_timers.c", + "src/core/profiling/stap_timers.c", + "src/core/profiling/timers.h", "src/core/support/alloc.c", "src/core/support/block_annotate.h", "src/core/support/cmdline.c", @@ -12351,7 +12355,6 @@ "src/core/json/json_common.h", "src/core/json/json_reader.h", "src/core/json/json_writer.h", - "src/core/profiling/timers.h", "src/core/security/auth_filters.h", "src/core/security/base64.h", "src/core/security/credentials.h", @@ -12569,9 +12572,6 @@ "src/core/json/json_string.c", "src/core/json/json_writer.c", "src/core/json/json_writer.h", - "src/core/profiling/basic_timers.c", - "src/core/profiling/stap_timers.c", - "src/core/profiling/timers.h", "src/core/security/auth_filters.h", "src/core/security/base64.c", "src/core/security/base64.h", @@ -12856,7 +12856,6 @@ "src/core/json/json_common.h", "src/core/json/json_reader.h", "src/core/json/json_writer.h", - "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", "src/core/surface/api_trace.h", @@ -13059,9 +13058,6 @@ "src/core/json/json_string.c", "src/core/json/json_writer.c", "src/core/json/json_writer.h", - "src/core/profiling/basic_timers.c", - "src/core/profiling/stap_timers.c", - "src/core/profiling/timers.h", "src/core/statistics/census_interface.h", "src/core/statistics/census_rpc_stats.h", "src/core/surface/api_trace.c", diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj index 4c3b36abdc8..fa495db07b6 100644 --- a/vsprojects/vcxproj/gpr/gpr.vcxproj +++ b/vsprojects/vcxproj/gpr/gpr.vcxproj @@ -163,6 +163,7 @@ + @@ -174,6 +175,10 @@ + + + + diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters index 69391b4f991..ee03e454535 100644 --- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters +++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters @@ -1,6 +1,12 @@ + + src\core\profiling + + + src\core\profiling + src\core\support @@ -200,6 +206,9 @@ + + src\core\profiling + src\core\support @@ -245,6 +254,9 @@ {c5e1baa7-de77-beb1-9675-942261648f79} + + {93b7086c-8c8a-6bbf-fb14-1f166bf0146a} + {bb116f2a-ea2a-c233-82da-0c54e3cbfec1} diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj index 183edbc05bf..28e38f65be2 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj @@ -338,7 +338,6 @@ - @@ -575,10 +574,6 @@ - - - - diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters index 66ce9ca05be..7ae7eca5226 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters @@ -292,12 +292,6 @@ src\core\json - - src\core\profiling - - - src\core\profiling - src\core\surface @@ -725,9 +719,6 @@ src\core\json - - src\core\profiling - src\core\statistics @@ -896,9 +887,6 @@ {e665cc0e-b994-d7c5-cc18-2007392019f0} - - {87674b72-0f05-0469-481a-bd8c7af9ad80} - {1d850ac6-e639-4eab-5338-4ba40272fcc9} diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj index b527179f9f3..3fde42b90ad 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj @@ -317,7 +317,6 @@ - @@ -514,10 +513,6 @@ - - - - diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters index 7be3c9ec93b..6e9b1696691 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -232,12 +232,6 @@ src\core\json - - src\core\profiling - - - src\core\profiling - src\core\surface @@ -623,9 +617,6 @@ src\core\json - - src\core\profiling - src\core\statistics @@ -794,9 +785,6 @@ {443ffc61-1bea-2477-6e54-1ddf8c139264} - - {7f91d9bf-c9de-835a-d74d-b16f843b89a9} - {e084164c-a069-00e3-db35-4e0b1cd6f0b7} From b0cd08acabe4273170e04e1f41e3656bad6db405 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Fri, 9 Oct 2015 16:58:01 -0700 Subject: [PATCH 037/111] php: validate and normalize metadata keys --- src/php/lib/Grpc/BaseStub.php | 25 ++++++++++++++++++- .../AbstractGeneratedCodeTest.php | 8 ++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php index 381b1143993..f61b8e9c3d4 100755 --- a/src/php/lib/Grpc/BaseStub.php +++ b/src/php/lib/Grpc/BaseStub.php @@ -114,7 +114,7 @@ class BaseStub { return true; } if ($new_state == \Grpc\CHANNEL_FATAL_FAILURE) { - throw new Exception('Failed to connect to server'); + throw new \Exception('Failed to connect to server'); } return false; } @@ -153,6 +153,25 @@ class BaseStub { return array($metadata_copy, $timeout); } + /** + * validate and normalize the metadata array + * @param $metadata The metadata map + * @return $metadata Validated and key-normalized metadata map + * @throw InvalidArgumentException if key contains invalid characters + */ + private function _validate_and_normalize_metadata($metadata) { + $metadata_copy = array(); + foreach ($metadata as $key => $value) { + if (!preg_match('/^[A-Za-z\d_-]+$/', $key)) { + throw new \InvalidArgumentException( + 'Metadata keys must be nonempty strings containing only '. + 'alphanumeric characters and hyphens'); + } + $metadata_copy[strtolower($key)] = $value; + } + return $metadata_copy; + } + /* This class is intended to be subclassed by generated code, so all functions begin with "_" to avoid name collisions. */ @@ -178,6 +197,7 @@ class BaseStub { $actual_metadata, $jwt_aud_uri); } + $actual_metadata = $this->_validate_and_normalize_metadata($actual_metadata); $call->start($argument, $actual_metadata, $options); return $call; } @@ -204,6 +224,7 @@ class BaseStub { $actual_metadata, $jwt_aud_uri); } + $actual_metadata = $this->_validate_and_normalize_metadata($actual_metadata); $call->start($actual_metadata); return $call; } @@ -231,6 +252,7 @@ class BaseStub { $actual_metadata, $jwt_aud_uri); } + $actual_metadata = $this->_validate_and_normalize_metadata($actual_metadata); $call->start($argument, $actual_metadata, $options); return $call; } @@ -254,6 +276,7 @@ class BaseStub { $actual_metadata, $jwt_aud_uri); } + $actual_metadata = $this->_validate_and_normalize_metadata($actual_metadata); $call->start($actual_metadata); return $call; } diff --git a/src/php/tests/generated_code/AbstractGeneratedCodeTest.php b/src/php/tests/generated_code/AbstractGeneratedCodeTest.php index 9cee1886666..5cdba1e5a0f 100644 --- a/src/php/tests/generated_code/AbstractGeneratedCodeTest.php +++ b/src/php/tests/generated_code/AbstractGeneratedCodeTest.php @@ -51,6 +51,14 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase { $this->assertTrue(is_string(self::$client->getTarget())); } + /** + * @expectedException InvalidArgumentException + */ + public function testInvalidMetadata() { + $div_arg = new math\DivArgs(); + $call = self::$client->Div($div_arg, array(' ' => 'abc123')); + } + public function testWriteFlags() { $div_arg = new math\DivArgs(); $div_arg->setDividend(7); From 8e30e25b14acf9e0fcd62eae96ad1c57280787f2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 17:00:38 -0700 Subject: [PATCH 038/111] Fix asan compile error --- src/core/profiling/timers.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h index 1ea7f71dc36..0d112e72485 100644 --- a/src/core/profiling/timers.h +++ b/src/core/profiling/timers.h @@ -91,6 +91,7 @@ void gpr_timer_end(const char *tagstr, int important, const char *file, #ifdef __cplusplus } +#if (defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER)) namespace grpc { class ProfileScope { public: @@ -106,6 +107,11 @@ class ProfileScope { #define GPR_TIMER_SCOPE(tag, important) \ ::grpc::ProfileScope _profile_scope_##__LINE__((tag), (important)) +#else +#define GPR_TIMER_SCOPE(tag, important) \ + do { \ + } while (false) +#endif #endif #endif /* GRPC_CORE_PROFILING_TIMERS_H */ From 3fcd3bf8f3563ecb02c06c2fe050a0c2cefa3142 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sat, 10 Oct 2015 02:30:38 +0200 Subject: [PATCH 039/111] Adds coverage reports for C and C++. --- tools/run_tests/post_tests_c.sh | 42 +++++++++++++++++++++++++++++++++ tools/run_tests/run_lcov.sh | 4 ++-- tools/run_tests/run_tests.py | 33 ++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100755 tools/run_tests/post_tests_c.sh diff --git a/tools/run_tests/post_tests_c.sh b/tools/run_tests/post_tests_c.sh new file mode 100755 index 00000000000..e8cfee30e15 --- /dev/null +++ b/tools/run_tests/post_tests_c.sh @@ -0,0 +1,42 @@ +#!/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. + +set -ex + +if [ "$CONFIG" != "gcov" ] ; then exit ; fi + +root=`readlink -f $(dirname $0)/../..` +out=$root/reports/c_cxx_coverage +tmp=`mktemp` +cd $root +tools/run_tests/run_tests.py -c gcov -l c c++ || true +lcov --capture --directory . --output-file $tmp +genhtml $tmp --output-directory $out +rm $tmp diff --git a/tools/run_tests/run_lcov.sh b/tools/run_tests/run_lcov.sh index 69b1de6b897..62bbd8c24b7 100755 --- a/tools/run_tests/run_lcov.sh +++ b/tools/run_tests/run_lcov.sh @@ -30,9 +30,9 @@ set -ex -out=`realpath ${1:-coverage}` +out=`readlink -f ${1:-coverage}` -root=`realpath $(dirname $0)/../..` +root=`readlink -f $(dirname $0)/../..` tmp=`mktemp` cd $root tools/run_tests/run_tests.py -c gcov -l c c++ || true diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index a3bed4ef879..5120f6cb931 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -175,6 +175,12 @@ class CLanguage(object): def build_steps(self): return [] + def post_tests_steps(self): + if self.platform == 'windows': + return [] + else: + return [['tools/run_tests/post_tests_c.sh']] + def makefile_name(self): return 'Makefile' @@ -199,6 +205,9 @@ class NodeLanguage(object): def build_steps(self): return [['tools/run_tests/build_node.sh']] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -224,6 +233,9 @@ class PhpLanguage(object): def build_steps(self): return [['tools/run_tests/build_php.sh']] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -270,6 +282,9 @@ class PythonLanguage(object): do_newline=True) return commands + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -295,6 +310,9 @@ class RubyLanguage(object): def build_steps(self): return [['tools/run_tests/build_ruby.sh']] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -343,6 +361,9 @@ class CSharpLanguage(object): else: return [['tools/run_tests/build_csharp.sh']] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -368,6 +389,9 @@ class ObjCLanguage(object): def build_steps(self): return [['src/objective-c/tests/build_tests.sh']] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' @@ -631,6 +655,11 @@ build_steps.extend(set( for l in languages for cmdline in l.build_steps())) +post_tests_steps = list(set( + jobset.JobSpec(cmdline, environ={'CONFIG': cfg}) + for cfg in build_configs + for l in languages + for cmdline in l.post_tests_steps())) runs_per_test = args.runs_per_test forever = args.forever @@ -788,6 +817,10 @@ def _build_and_run( tree = ET.ElementTree(root) tree.write(xml_report, encoding='UTF-8') + if not jobset.run(post_tests_steps, maxjobs=1, stop_on_failure=True, + newline_on_success=newline_on_success, travis=travis): + return 3 + if cache: cache.save() return 0 From 63bda56884f1dece057f84dc6f94f9c2a5ce1605 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 17:40:19 -0700 Subject: [PATCH 040/111] Make metadata unref atomic We used to need to lock the metadata context to unref an mdelem. This change makes it possible to lock only when the mdelem refcount would reach zero. --- src/core/surface/call.c | 7 ++-- src/core/transport/chttp2/stream_encoder.c | 7 ++-- src/core/transport/metadata.c | 39 ++++++---------------- src/core/transport/metadata.h | 22 ------------ 4 files changed, 14 insertions(+), 61 deletions(-) diff --git a/src/core/surface/call.c b/src/core/surface/call.c index d15a3bcbade..9bf04514426 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -1484,7 +1484,6 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, grpc_metadata_array *dest; grpc_metadata *mdusr; int is_trailing; - grpc_mdctx *mdctx = call->metadata_context; is_trailing = call->read_state >= READ_STATE_GOT_INITIAL_METADATA; for (l = md->list.head; l != NULL; l = l->next) { @@ -1532,14 +1531,12 @@ static void recv_metadata(grpc_exec_ctx *exec_ctx, grpc_call *call, call->read_state = READ_STATE_GOT_INITIAL_METADATA; } - grpc_mdctx_lock(mdctx); for (l = md->list.head; l; l = l->next) { - if (l->md) GRPC_MDCTX_LOCKED_MDELEM_UNREF(mdctx, l->md); + if (l->md) GRPC_MDELEM_UNREF(l->md); } for (l = md->garbage.head; l; l = l->next) { - GRPC_MDCTX_LOCKED_MDELEM_UNREF(mdctx, l->md); + GRPC_MDELEM_UNREF(l->md); } - grpc_mdctx_unlock(mdctx); } grpc_call_stack *grpc_call_get_call_stack(grpc_call *call) { diff --git a/src/core/transport/chttp2/stream_encoder.c b/src/core/transport/chttp2/stream_encoder.c index 83227e677db..2cbf90fb845 100644 --- a/src/core/transport/chttp2/stream_encoder.c +++ b/src/core/transport/chttp2/stream_encoder.c @@ -584,7 +584,6 @@ void grpc_chttp2_encode(grpc_stream_op *ops, size_t ops_count, int eof, size_t max_take_size; gpr_uint32 curop = 0; gpr_uint32 unref_op; - grpc_mdctx *mdctx = compressor->mdctx; grpc_linked_mdelem *l; int need_unref = 0; gpr_timespec deadline; @@ -650,17 +649,15 @@ void grpc_chttp2_encode(grpc_stream_op *ops, size_t ops_count, int eof, finish_frame(&st, 1, eof); if (need_unref) { - grpc_mdctx_lock(mdctx); for (unref_op = 0; unref_op < curop; unref_op++) { op = &ops[unref_op]; if (op->type != GRPC_OP_METADATA) continue; for (l = op->data.metadata.list.head; l; l = l->next) { - if (l->md) GRPC_MDCTX_LOCKED_MDELEM_UNREF(mdctx, l->md); + if (l->md) GRPC_MDELEM_UNREF(l->md); } for (l = op->data.metadata.garbage.head; l; l = l->next) { - GRPC_MDCTX_LOCKED_MDELEM_UNREF(mdctx, l->md); + GRPC_MDELEM_UNREF(l->md); } } - grpc_mdctx_unlock(mdctx); } } diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index 3dbb9f0b539..02f9cda754d 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -159,6 +159,10 @@ static void ref_md_locked(internal_metadata *md DEBUG_ARGS) { grpc_mdstr_as_c_string((grpc_mdstr *)md->value)); #endif if (0 == gpr_atm_no_barrier_fetch_add(&md->refcnt, 1)) { + /* This ref is dropped if grpc_mdelem_unref reaches 1, + but allows us to safely unref without taking the mdctx lock + until such time */ + gpr_atm_no_barrier_fetch_add(&md->refcnt, 1); md->context->mdtab_free--; } } @@ -465,7 +469,7 @@ grpc_mdelem *grpc_mdelem_from_metadata_strings(grpc_mdctx *ctx, /* not found: create a new pair */ md = gpr_malloc(sizeof(internal_metadata)); - gpr_atm_rel_store(&md->refcnt, 1); + gpr_atm_rel_store(&md->refcnt, 2); md->context = ctx; md->key = key; md->value = value; @@ -534,8 +538,6 @@ grpc_mdelem *grpc_mdelem_ref(grpc_mdelem *gmd DEBUG_ARGS) { void grpc_mdelem_unref(grpc_mdelem *gmd DEBUG_ARGS) { internal_metadata *md = (internal_metadata *)gmd; - grpc_mdctx *ctx = md->context; - lock(ctx); #ifdef GRPC_METADATA_REFCOUNT_DEBUG gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, "ELM UNREF:%p:%d->%d: '%s' = '%s'", md, @@ -544,11 +546,13 @@ void grpc_mdelem_unref(grpc_mdelem *gmd DEBUG_ARGS) { grpc_mdstr_as_c_string((grpc_mdstr *)md->key), grpc_mdstr_as_c_string((grpc_mdstr *)md->value)); #endif - assert(gpr_atm_no_barrier_load(&md->refcnt) >= 1); - if (1 == gpr_atm_full_fetch_add(&md->refcnt, -1)) { + if (2 == gpr_atm_full_fetch_add(&md->refcnt, -1)) { + grpc_mdctx *ctx = md->context; + lock(ctx); + GPR_ASSERT(1 == gpr_atm_full_fetch_add(&md->refcnt, -1)); ctx->mdtab_free++; + unlock(ctx); } - unlock(ctx); } const char *grpc_mdstr_as_c_string(grpc_mdstr *s) { @@ -627,29 +631,6 @@ gpr_slice grpc_mdstr_as_base64_encoded_and_huffman_compressed(grpc_mdstr *gs) { return slice; } -void grpc_mdctx_lock(grpc_mdctx *ctx) { lock(ctx); } - -void grpc_mdctx_locked_mdelem_unref(grpc_mdctx *ctx, - grpc_mdelem *gmd DEBUG_ARGS) { - internal_metadata *md = (internal_metadata *)gmd; - grpc_mdctx *elem_ctx = md->context; - GPR_ASSERT(ctx == elem_ctx); -#ifdef GRPC_METADATA_REFCOUNT_DEBUG - gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, - "ELM UNREF:%p:%d->%d: '%s' = '%s'", md, - gpr_atm_no_barrier_load(&md->refcnt), - gpr_atm_no_barrier_load(&md->refcnt) - 1, - grpc_mdstr_as_c_string((grpc_mdstr *)md->key), - grpc_mdstr_as_c_string((grpc_mdstr *)md->value)); -#endif - assert(gpr_atm_no_barrier_load(&md->refcnt) >= 1); - if (1 == gpr_atm_full_fetch_add(&md->refcnt, -1)) { - ctx->mdtab_free++; - } -} - -void grpc_mdctx_unlock(grpc_mdctx *ctx) { unlock(ctx); } - static int conforms_to(grpc_mdstr *s, const gpr_uint8 *legal_bits) { const gpr_uint8 *p = GPR_SLICE_START_PTR(s->slice); const gpr_uint8 *e = GPR_SLICE_END_PTR(s->slice); diff --git a/src/core/transport/metadata.h b/src/core/transport/metadata.h index 136a65f288e..9a8164037c6 100644 --- a/src/core/transport/metadata.h +++ b/src/core/transport/metadata.h @@ -155,28 +155,6 @@ int grpc_mdstr_is_legal_header(grpc_mdstr *s); int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s); int grpc_mdstr_is_bin_suffixed(grpc_mdstr *s); -/* Batch mode metadata functions. - These API's have equivalents above, but allow taking the mdctx just once, - performing a bunch of work, and then leaving the mdctx. */ - -/* Lock the metadata context: it's only safe to call _locked_ functions against - this context from the calling thread until grpc_mdctx_unlock is called */ -void grpc_mdctx_lock(grpc_mdctx *ctx); -#ifdef GRPC_METADATA_REFCOUNT_DEBUG -#define GRPC_MDCTX_LOCKED_MDELEM_UNREF(ctx, elem) \ - grpc_mdctx_locked_mdelem_unref((ctx), (elem), __FILE__, __LINE__) -/* Unref a metadata element */ -void grpc_mdctx_locked_mdelem_unref(grpc_mdctx *ctx, grpc_mdelem *elem, - const char *file, int line); -#else -#define GRPC_MDCTX_LOCKED_MDELEM_UNREF(ctx, elem) \ - grpc_mdctx_locked_mdelem_unref((ctx), (elem)) -/* Unref a metadata element */ -void grpc_mdctx_locked_mdelem_unref(grpc_mdctx *ctx, grpc_mdelem *elem); -#endif -/* Unlock the metadata context */ -void grpc_mdctx_unlock(grpc_mdctx *ctx); - #define GRPC_MDSTR_KV_HASH(k_hash, v_hash) (GPR_ROTL((k_hash), 2) ^ (v_hash)) #endif /* GRPC_INTERNAL_CORE_TRANSPORT_METADATA_H */ From 8344daa1dfe627591b5566aaca705c1f8c057f4d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 18:10:57 -0700 Subject: [PATCH 041/111] Make getting metadata user data a lock free operation --- src/core/transport/metadata.c | 37 +++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index 02f9cda754d..1b48b48e097 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -62,6 +62,8 @@ #define REF_MD_LOCKED(s) ref_md_locked((s)) #endif +typedef void (*destroy_user_data_func)(void *user_data); + typedef struct internal_string { /* must be byte compatible with grpc_mdstr */ gpr_slice slice; @@ -88,8 +90,8 @@ typedef struct internal_metadata { /* private only data */ gpr_mu mu_user_data; - void *user_data; - void (*destroy_user_data)(void *user_data); + gpr_atm destroy_user_data; + gpr_atm user_data; grpc_mdctx *context; struct internal_metadata *bucket_next; @@ -201,12 +203,14 @@ static void discard_metadata(grpc_mdctx *ctx) { for (i = 0; i < ctx->mdtab_capacity; i++) { cur = ctx->mdtab[i]; while (cur) { + void *user_data = (void *)gpr_atm_no_barrier_load(&cur->user_data); GPR_ASSERT(gpr_atm_acq_load(&cur->refcnt) == 0); next = cur->bucket_next; INTERNAL_STRING_UNREF(cur->key); INTERNAL_STRING_UNREF(cur->value); - if (cur->user_data) { - cur->destroy_user_data(cur->user_data); + if (user_data != NULL) { + ((destroy_user_data_func)gpr_atm_no_barrier_load( + &cur->destroy_user_data))(user_data); } gpr_mu_destroy(&cur->mu_user_data); gpr_free(cur); @@ -392,12 +396,14 @@ static void gc_mdtab(grpc_mdctx *ctx) { for (i = 0; i < ctx->mdtab_capacity; i++) { prev_next = &ctx->mdtab[i]; for (md = ctx->mdtab[i]; md; md = next) { + void *user_data = (void *)gpr_atm_no_barrier_load(&md->user_data); next = md->bucket_next; if (gpr_atm_acq_load(&md->refcnt) == 0) { INTERNAL_STRING_UNREF(md->key); INTERNAL_STRING_UNREF(md->value); if (md->user_data) { - md->destroy_user_data(md->user_data); + ((destroy_user_data_func)gpr_atm_no_barrier_load( + &md->destroy_user_data))(user_data); } gpr_free(md); *prev_next = next; @@ -473,8 +479,8 @@ grpc_mdelem *grpc_mdelem_from_metadata_strings(grpc_mdctx *ctx, md->context = ctx; md->key = key; md->value = value; - md->user_data = NULL; - md->destroy_user_data = NULL; + md->user_data = 0; + md->destroy_user_data = 0; md->bucket_next = ctx->mdtab[hash % ctx->mdtab_capacity]; gpr_mu_init(&md->mu_user_data); #ifdef GRPC_METADATA_REFCOUNT_DEBUG @@ -588,13 +594,14 @@ size_t grpc_mdctx_get_mdtab_free_test_only(grpc_mdctx *ctx) { return ctx->mdtab_free; } -void *grpc_mdelem_get_user_data(grpc_mdelem *md, - void (*if_destroy_func)(void *)) { +void *grpc_mdelem_get_user_data(grpc_mdelem *md, void (*destroy_func)(void *)) { internal_metadata *im = (internal_metadata *)md; void *result; - gpr_mu_lock(&im->mu_user_data); - result = im->destroy_user_data == if_destroy_func ? im->user_data : NULL; - gpr_mu_unlock(&im->mu_user_data); + if (gpr_atm_acq_load(&im->destroy_user_data) == (gpr_atm)destroy_func) { + return (void *)gpr_atm_no_barrier_load(&im->user_data); + } else { + return NULL; + } return result; } @@ -603,7 +610,7 @@ void grpc_mdelem_set_user_data(grpc_mdelem *md, void (*destroy_func)(void *), internal_metadata *im = (internal_metadata *)md; GPR_ASSERT((user_data == NULL) == (destroy_func == NULL)); gpr_mu_lock(&im->mu_user_data); - if (im->destroy_user_data) { + if (gpr_atm_no_barrier_load(&im->destroy_user_data)) { /* user data can only be set once */ gpr_mu_unlock(&im->mu_user_data); if (destroy_func != NULL) { @@ -611,8 +618,8 @@ void grpc_mdelem_set_user_data(grpc_mdelem *md, void (*destroy_func)(void *), } return; } - im->destroy_user_data = destroy_func; - im->user_data = user_data; + gpr_atm_no_barrier_store(&im->user_data, (gpr_atm)user_data); + gpr_atm_rel_store(&im->destroy_user_data, (gpr_atm)destroy_func); gpr_mu_unlock(&im->mu_user_data); } From b8e82670ce244434e7570fc4b0459628bd6beee1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Sat, 10 Oct 2015 13:52:47 -0700 Subject: [PATCH 042/111] Fix race conditions --- src/core/transport/metadata.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c index 1b48b48e097..68f23177eba 100644 --- a/src/core/transport/metadata.c +++ b/src/core/transport/metadata.c @@ -160,12 +160,10 @@ static void ref_md_locked(internal_metadata *md DEBUG_ARGS) { grpc_mdstr_as_c_string((grpc_mdstr *)md->key), grpc_mdstr_as_c_string((grpc_mdstr *)md->value)); #endif - if (0 == gpr_atm_no_barrier_fetch_add(&md->refcnt, 1)) { - /* This ref is dropped if grpc_mdelem_unref reaches 1, - but allows us to safely unref without taking the mdctx lock - until such time */ - gpr_atm_no_barrier_fetch_add(&md->refcnt, 1); + if (0 == gpr_atm_no_barrier_fetch_add(&md->refcnt, 2)) { md->context->mdtab_free--; + } else { + GPR_ASSERT(1 != gpr_atm_no_barrier_fetch_add(&md->refcnt, -1)); } } @@ -537,7 +535,7 @@ grpc_mdelem *grpc_mdelem_ref(grpc_mdelem *gmd DEBUG_ARGS) { this function - meaning that no adjustment to mdtab_free is necessary, simplifying the logic here to be just an atomic increment */ /* use C assert to have this removed in opt builds */ - assert(gpr_atm_no_barrier_load(&md->refcnt) >= 1); + assert(gpr_atm_no_barrier_load(&md->refcnt) >= 2); gpr_atm_no_barrier_fetch_add(&md->refcnt, 1); return gmd; } @@ -555,8 +553,10 @@ void grpc_mdelem_unref(grpc_mdelem *gmd DEBUG_ARGS) { if (2 == gpr_atm_full_fetch_add(&md->refcnt, -1)) { grpc_mdctx *ctx = md->context; lock(ctx); - GPR_ASSERT(1 == gpr_atm_full_fetch_add(&md->refcnt, -1)); - ctx->mdtab_free++; + if (1 == gpr_atm_no_barrier_load(&md->refcnt)) { + ctx->mdtab_free++; + gpr_atm_no_barrier_store(&md->refcnt, 0); + } unlock(ctx); } } From 9519009cf085bbb7751afd74aaf5b7faefc2b995 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Sat, 10 Oct 2015 20:06:35 -0700 Subject: [PATCH 043/111] Update gyp --- binding.gyp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index 392835c7721..39036b3b2a8 100644 --- a/binding.gyp +++ b/binding.gyp @@ -64,6 +64,8 @@ 'dependencies': [ ], 'sources': [ + 'src/core/profiling/basic_timers.c', + 'src/core/profiling/stap_timers.c', 'src/core/support/alloc.c', 'src/core/support/cmdline.c', 'src/core/support/cpu_iphone.c', @@ -99,6 +101,7 @@ 'src/core/support/thd_win32.c', 'src/core/support/time.c', 'src/core/support/time_posix.c', + 'src/core/support/time_precise.c', 'src/core/support/time_win32.c', 'src/core/support/tls_pthread.c', ], @@ -208,8 +211,6 @@ 'src/core/json/json_reader.c', 'src/core/json/json_string.c', 'src/core/json/json_writer.c', - 'src/core/profiling/basic_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_queue.c', From f0a293ed67bca4b79f377d3ba2d7f05de937fdee Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 12 Oct 2015 10:05:50 -0700 Subject: [PATCH 044/111] Robustness work for port_server startup --- tools/run_tests/port_server.py | 9 +++++++-- tools/run_tests/run_tests.py | 37 +++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/tools/run_tests/port_server.py b/tools/run_tests/port_server.py index b953df952cb..4e473af4113 100755 --- a/tools/run_tests/port_server.py +++ b/tools/run_tests/port_server.py @@ -42,7 +42,7 @@ import time # increment this number whenever making a change to ensure that # the changes are picked up by running CI servers # note that all changes must be backwards compatible -_MY_VERSION = 2 +_MY_VERSION = 4 if len(sys.argv) == 2 and sys.argv[1] == 'dump_version': @@ -52,8 +52,13 @@ if len(sys.argv) == 2 and sys.argv[1] == 'dump_version': argp = argparse.ArgumentParser(description='Server for httpcli_test') argp.add_argument('-p', '--port', default=12345, type=int) +argp.add_argument('-l', '--logfile', default=None, type=str) args = argp.parse_args() +if args.logfile is not None: + sys.stderr = open(args.logfile, 'w') + sys.stdout = sys.stderr + print 'port server running on port %d' % args.port pool = [] @@ -146,6 +151,6 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler): httpd = BaseHTTPServer.HTTPServer(('', args.port), Handler) while keep_running: httpd.handle_request() + sys.stderr.flush() print 'done' - diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 048ab90798d..71377590221 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -43,6 +43,8 @@ import re import socket import subprocess import sys +import tempfile +import traceback import time import xml.etree.cElementTree as ET import urllib2 @@ -704,35 +706,50 @@ def _start_port_server(port_server_port): urllib2.urlopen('http://localhost:%d/quitquitquit' % port_server_port).read() time.sleep(1) if not running: - print 'starting port_server' - port_log = open('portlog.txt', 'w') + fd, logfile = tempfile.mkstemp() + os.close(fd) + print 'starting port_server, with log file %s' % logfile port_server = subprocess.Popen( - [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port], - stderr=subprocess.STDOUT, - stdout=port_log) + [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port, '-l', logfile], + close_fds=True) + time.sleep(1) # ensure port server is up waits = 0 while True: if waits > 10: + print 'killing port server due to excessive start up waits' port_server.kill() if port_server.poll() is not None: print 'port_server failed to start' - port_log = open('portlog.txt', 'r').read() - print port_log - sys.exit(1) + # try one final time: maybe another build managed to start one + time.sleep(1) + try: + urllib2.urlopen('http://localhost:%d/get' % port_server_port, + timeout=1).read() + print 'last ditch attempt to contact port server succeeded' + break + except: + traceback.print_exc(); + port_log = open(logfile, 'r').read() + print port_log + sys.exit(1) try: urllib2.urlopen('http://localhost:%d/get' % port_server_port, timeout=1).read() + print 'port server is up and ready' break except socket.timeout: print 'waiting for port_server: timeout' - time.sleep(0.5) + traceback.print_exc(); + time.sleep(1) waits += 1 except urllib2.URLError: print 'waiting for port_server: urlerror' - time.sleep(0.5) + traceback.print_exc(); + time.sleep(1) waits += 1 except: + traceback.print_exc(); port_server.kill() raise From f438ee17b0c890c2bb6a347f0ccf9ceb08b76575 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Mon, 12 Oct 2015 10:12:37 -0700 Subject: [PATCH 045/111] fixed comment --- src/php/lib/Grpc/BaseStub.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php index f61b8e9c3d4..0a3e1f78bf4 100755 --- a/src/php/lib/Grpc/BaseStub.php +++ b/src/php/lib/Grpc/BaseStub.php @@ -165,7 +165,7 @@ class BaseStub { if (!preg_match('/^[A-Za-z\d_-]+$/', $key)) { throw new \InvalidArgumentException( 'Metadata keys must be nonempty strings containing only '. - 'alphanumeric characters and hyphens'); + 'alphanumeric characters, hyphens and underscores'); } $metadata_copy[strtolower($key)] = $value; } From d2c39713bc821c59f3962fe4ae807b1d14c84ea8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 12 Oct 2015 11:08:49 -0700 Subject: [PATCH 046/111] Attempt to daemonize port server --- tools/run_tests/port_server.py | 11 +++++++---- tools/run_tests/run_tests.py | 12 ++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tools/run_tests/port_server.py b/tools/run_tests/port_server.py index 4e473af4113..0593d7dc974 100755 --- a/tools/run_tests/port_server.py +++ b/tools/run_tests/port_server.py @@ -42,7 +42,7 @@ import time # increment this number whenever making a change to ensure that # the changes are picked up by running CI servers # note that all changes must be backwards compatible -_MY_VERSION = 4 +_MY_VERSION = 5 if len(sys.argv) == 2 and sys.argv[1] == 'dump_version': @@ -124,9 +124,12 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler): self.send_header('Content-Type', 'text/plain') self.end_headers() p = int(self.path[6:]) - del in_use[p] - pool.append(p) - self.log_message('drop port %d' % p) + if p in in_use: + del in_use[p] + pool.append(p) + self.log_message('drop known port %d' % p) + else: + self.log_message('drop unknown port %d' % p) elif self.path == '/version_number': # fetch a version string and the current process pid self.send_response(200) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 71377590221..2934b5f70f8 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -709,9 +709,17 @@ def _start_port_server(port_server_port): fd, logfile = tempfile.mkstemp() os.close(fd) print 'starting port_server, with log file %s' % logfile - port_server = subprocess.Popen( - [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port, '-l', logfile], + args = [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port, '-l', logfile] + if platform.system() == 'Windows': + port_server = subprocess.Popen( + args, + creationflags = 0x00000008, # detached process close_fds=True) + else: + port_server = subprocess.Popen( + args, + preexec_fn=os.setsid, + close_fds=True) time.sleep(1) # ensure port server is up waits = 0 From b1004103a8666193f60f0d4ecc3be31ceb2b3847 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 12 Oct 2015 18:30:04 +0000 Subject: [PATCH 047/111] Stop using atm operations on fd->shutdown since that is already used within fd->mu anyway (and is not the right size for atm in some cases) --- src/core/iomgr/fd_posix.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/iomgr/fd_posix.c b/src/core/iomgr/fd_posix.c index 231bc988a87..7ff80e6cf82 100644 --- a/src/core/iomgr/fd_posix.c +++ b/src/core/iomgr/fd_posix.c @@ -286,7 +286,7 @@ static void set_ready(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure **st) { void grpc_fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { gpr_mu_lock(&fd->mu); - GPR_ASSERT(!gpr_atm_no_barrier_load(&fd->shutdown)); + GPR_ASSERT(!fd->shutdown); fd->shutdown = 1; set_ready_locked(exec_ctx, fd, &fd->read_closure); set_ready_locked(exec_ctx, fd, &fd->write_closure); @@ -320,7 +320,7 @@ gpr_uint32 grpc_fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset, gpr_mu_lock(&fd->mu); /* if we are shutdown, then don't add to the watcher set */ - if (gpr_atm_no_barrier_load(&fd->shutdown)) { + if (fd->shutdown) { watcher->fd = NULL; watcher->pollset = NULL; watcher->worker = NULL; From 41a7bf544944e343a764b7e3e36fa80c27064149 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 12 Oct 2015 12:54:55 -0700 Subject: [PATCH 048/111] Close standard pipes --- tools/run_tests/port_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/run_tests/port_server.py b/tools/run_tests/port_server.py index 0593d7dc974..3b85486ebfe 100755 --- a/tools/run_tests/port_server.py +++ b/tools/run_tests/port_server.py @@ -56,6 +56,9 @@ argp.add_argument('-l', '--logfile', default=None, type=str) args = argp.parse_args() if args.logfile is not None: + sys.stdin.close() + sys.stderr.close() + sys.stdout.close() sys.stderr = open(args.logfile, 'w') sys.stdout = sys.stderr From 367d41d304e2c69bfa1182c67f15b51551e96f8c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 12 Oct 2015 13:00:22 -0700 Subject: [PATCH 049/111] Trying harder to avoid Jenkins killing us --- tools/run_tests/run_tests.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 2934b5f70f8..8f69e4a18a9 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -710,14 +710,18 @@ def _start_port_server(port_server_port): os.close(fd) print 'starting port_server, with log file %s' % logfile args = [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port, '-l', logfile] + env = dict(os.environ) + env['BUILD_ID'] = 'pleaseDontKillMeJenkins' if platform.system() == 'Windows': port_server = subprocess.Popen( - args, - creationflags = 0x00000008, # detached process - close_fds=True) + args, + env=env, + creationflags = 0x00000008, # detached process + close_fds=True) else: port_server = subprocess.Popen( args, + env=env, preexec_fn=os.setsid, close_fds=True) time.sleep(1) From 6fe015e492ef41f533ac3441882c437a7560b977 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 12 Oct 2015 13:18:06 -0700 Subject: [PATCH 050/111] Add some tests to increase coverage, fix some failures --- src/node/ext/call.cc | 6 +++- src/node/interop/interop_client.js | 1 - src/node/src/credentials.js | 3 ++ src/node/test/call_test.js | 48 ++++++++++++++++++++++++++++ src/node/test/channel_test.js | 1 - src/node/test/credentials_test.js | 18 +++++++++++ src/node/test/health_test.js | 20 ++++++++++-- src/node/test/interop_sanity_test.js | 2 +- src/node/test/surface_test.js | 6 ++-- tools/run_tests/run_node.sh | 3 +- 10 files changed, 98 insertions(+), 10 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index b63e294f9a3..fcad62261fb 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -712,7 +712,11 @@ NAN_METHOD(Call::CancelWithStatus) { Call *call = ObjectWrap::Unwrap(info.This()); grpc_status_code code = static_cast( Nan::To(info[0]).FromJust()); - Utf8String details(info[0]); + if (code == GRPC_STATUS_OK) { + return Nan::ThrowRangeError( + "cancelWithStatus cannot be called with OK status"); + } + Utf8String details(info[1]); grpc_call_cancel_with_status(call->wrapped_call, code, *details, NULL); } diff --git a/src/node/interop/interop_client.js b/src/node/interop/interop_client.js index cb55083d1ae..b5061895cfa 100644 --- a/src/node/interop/interop_client.js +++ b/src/node/interop/interop_client.js @@ -35,7 +35,6 @@ var fs = require('fs'); var path = require('path'); -var _ = require('lodash'); var grpc = require('..'); var testProto = grpc.load({ root: __dirname + '/../../..', diff --git a/src/node/src/credentials.js b/src/node/src/credentials.js index ddc094f8968..ff10a22e6a9 100644 --- a/src/node/src/credentials.js +++ b/src/node/src/credentials.js @@ -99,6 +99,9 @@ exports.createFromMetadataGenerator = function(metadata_generator) { if (error.hasOwnProperty('code')) { code = error.code; } + if (!metadata) { + metadata = new Metadata(); + } } callback(code, message, metadata._getCoreRepresentation()); }); diff --git a/src/node/test/call_test.js b/src/node/test/call_test.js index c316fe7f10d..b7f4f565105 100644 --- a/src/node/test/call_test.js +++ b/src/node/test/call_test.js @@ -108,6 +108,17 @@ describe('call', function() { }, TypeError); }); }); + describe('deadline', function() { + it('should time out immediately with negative deadline', function(done) { + var call = new grpc.Call(channel, 'method', -Infinity); + var batch = {}; + batch[grpc.opType.RECV_STATUS_ON_CLIENT] = true; + call.startBatch(batch, function(err, response) { + assert.strictEqual(response.status.code, grpc.status.DEADLINE_EXCEEDED); + done(); + }); + }); + }); describe('startBatch', function() { it('should fail without an object and a function', function() { var call = new grpc.Call(channel, 'method', getDeadline(1)); @@ -192,6 +203,43 @@ describe('call', function() { }); }); }); + describe('cancelWithStatus', function() { + it('should reject anything other than an integer and a string', function() { + assert.doesNotThrow(function() { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + call.cancelWithStatus(1, 'details'); + }); + assert.throws(function() { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + call.cancelWithStatus(); + }); + assert.throws(function() { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + call.cancelWithStatus(''); + }); + assert.throws(function() { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + call.cancelWithStatus(5, {}); + }); + }); + it('should reject the OK status code', function() { + assert.throws(function() { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + call.cancelWithStatus(0, 'details'); + }); + }); + it('should result in the call ending with a status', function(done) { + var call = new grpc.Call(channel, 'method', getDeadline(1)); + var batch = {}; + batch[grpc.opType.RECV_STATUS_ON_CLIENT] = true; + call.startBatch(batch, function(err, response) { + assert.strictEqual(response.status.code, 5); + assert.strictEqual(response.status.details, 'details'); + done(); + }); + call.cancelWithStatus(5, 'details'); + }); + }); describe('getPeer', function() { it('should return a string', function() { var call = new grpc.Call(channel, 'method', getDeadline(1)); diff --git a/src/node/test/channel_test.js b/src/node/test/channel_test.js index 05269f7b6e4..5bcf63ee50b 100644 --- a/src/node/test/channel_test.js +++ b/src/node/test/channel_test.js @@ -155,7 +155,6 @@ describe('channel', function() { deadline.setSeconds(deadline.getSeconds() + 1); channel.watchConnectivityState(old_state, deadline, function(err, value) { assert(err); - console.log('Callback from watchConnectivityState'); done(); }); }); diff --git a/src/node/test/credentials_test.js b/src/node/test/credentials_test.js index 7fc311a888d..960405ab3b9 100644 --- a/src/node/test/credentials_test.js +++ b/src/node/test/credentials_test.js @@ -169,6 +169,24 @@ describe('client credentials', function() { done(); }); }); + it.skip('should propagate errors that the updater emits', function(done) { + var metadataUpdater = function(service_url, callback) { + var error = new Error('Authentication error'); + error.code = grpc.status.UNAUTHENTICATED; + callback(error); + }; + var creds = grpc.credentials.createFromMetadataGenerator(metadataUpdater); + var combined_creds = grpc.credentials.combineChannelCredentials( + client_ssl_creds, creds); + var client = new Client('localhost:' + port, combined_creds, + client_options); + client.unary({}, function(err, data) { + assert(err); + assert.strictEqual(err.message, 'Authentication error'); + assert.strictEqual(err.code, grpc.status.UNAUTHENTICATED); + done(); + }); + }); describe('Per-rpc creds', function() { var client; var updater_creds; diff --git a/src/node/test/health_test.js b/src/node/test/health_test.js index a4dc24cf467..c93b528d42f 100644 --- a/src/node/test/health_test.js +++ b/src/node/test/health_test.js @@ -45,11 +45,13 @@ describe('Health Checking', function() { 'grpc.test.TestServiceNotServing': 'NOT_SERVING', 'grpc.test.TestServiceServing': 'SERVING' }; - var healthServer = new grpc.Server(); - healthServer.addProtoService(health.service, - new health.Implementation(statusMap)); + var healthServer; + var healthImpl; var healthClient; before(function() { + healthServer = new grpc.Server(); + healthImpl = new health.Implementation(statusMap); + healthServer.addProtoService(health.service, healthImpl); var port_num = healthServer.bind('0.0.0.0:0', grpc.ServerCredentials.createInsecure()); healthServer.start(); @@ -89,4 +91,16 @@ describe('Health Checking', function() { done(); }); }); + it('should get a different response if the status changes', function(done) { + healthClient.check({service: 'transient'}, function(err, response) { + assert(err); + assert.strictEqual(err.code, grpc.status.NOT_FOUND); + healthImpl.setStatus('transient', 'SERVING'); + healthClient.check({service: 'transient'}, function(err, response) { + assert.ifError(err); + assert.strictEqual(response.status, 'SERVING'); + done(); + }); + }); + }); }); diff --git a/src/node/test/interop_sanity_test.js b/src/node/test/interop_sanity_test.js index f8c0b141377..f008a87585c 100644 --- a/src/node/test/interop_sanity_test.js +++ b/src/node/test/interop_sanity_test.js @@ -71,7 +71,7 @@ describe('Interop tests', function() { interop_client.runTest(port, name_override, 'server_streaming', true, true, done); }); - it.only('should pass ping_pong', function(done) { + it('should pass ping_pong', function(done) { interop_client.runTest(port, name_override, 'ping_pong', true, true, done); }); it('should pass empty_stream', function(done) { diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index 395ea887ecb..71801c38dd1 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -382,7 +382,8 @@ describe('Other conditions', function() { unary: function(call, cb) { var req = call.request; if (req.error) { - cb(new Error('Requested error'), null, trailer_metadata); + cb({code: grpc.status.UNKNOWN, + details: 'Requested error'}, null, trailer_metadata); } else { cb(null, {count: 1}, trailer_metadata); } @@ -407,7 +408,8 @@ describe('Other conditions', function() { serverStream: function(stream) { var req = stream.request; if (req.error) { - var err = new Error('Requested error'); + var err = {code: grpc.status.UNKNOWN, + details: 'Requested error'}; err.metadata = trailer_metadata; stream.emit('error', err); } else { diff --git a/tools/run_tests/run_node.sh b/tools/run_tests/run_node.sh index 0a11e87c37a..85e3a38f844 100755 --- a/tools/run_tests/run_node.sh +++ b/tools/run_tests/run_node.sh @@ -45,7 +45,8 @@ then gcov Release/obj.target/grpc/ext/*.o lcov --base-directory . --directory . -c -o coverage.info genhtml -o ../reports/node_ext_coverage --num-spaces 2 \ - -t 'Node gRPC test coverage' coverage.info + -t 'Node gRPC test coverage' coverage.info --rc genhtml_hi_limit=95 \ + --rc genhtml_med_limit=80 echo '' > \ ../reports/node_coverage/index.html else From 87879b35272a7f71fef97d84c4ab750445d8e3e5 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Mon, 12 Oct 2015 23:28:53 +0200 Subject: [PATCH 051/111] Forgot to add the post_build_steps for Sanity... --- tools/run_tests/run_tests.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 5120f6cb931..b4008777dc9 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -417,6 +417,9 @@ class Sanity(object): def build_steps(self): return [] + def post_tests_steps(self): + return [] + def makefile_name(self): return 'Makefile' From 7f715707aabc2e0a9a4b85b51eab98ef9cf61050 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 12 Oct 2015 22:47:58 +0000 Subject: [PATCH 052/111] Some changes required to make C++ code generator plugin work fine for external code compiled under gcc-4.4 : eliminate use of nullptr, primarily. --- src/compiler/cpp_generator.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index 1bf2b16ed6f..3c8ca8ab45d 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -585,7 +585,7 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, "class Service : public ::grpc::SynchronousService {\n" " public:\n"); printer->Indent(); - printer->Print("Service() : service_(nullptr) {}\n"); + printer->Print("Service();\n"); printer->Print("virtual ~Service();\n"); for (int i = 0; i < service->method_count(); ++i) { PrintHeaderServerMethodSync(printer, service->method(i), vars); @@ -594,7 +594,7 @@ void PrintHeaderService(grpc::protobuf::io::Printer *printer, printer->Outdent(); printer->Print( " private:\n" - " ::grpc::RpcService* service_;\n"); + " std::unique_ptr< ::grpc::RpcService> service_;\n"); printer->Print("};\n"); // Server side - Asynchronous @@ -1013,9 +1013,11 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, "$prefix$$Service$_method_names, $MethodCount$) " "{}\n\n"); + printer->Print(*vars, + "$ns$$Service$::Service::Service() {\n" + "}\n\n"); printer->Print(*vars, "$ns$$Service$::Service::~Service() {\n" - " delete service_;\n" "}\n\n"); for (int i = 0; i < service->method_count(); ++i) { (*vars)["Idx"] = as_string(i); @@ -1026,10 +1028,10 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, "::grpc::RpcService* $ns$$Service$::Service::service() {\n"); printer->Indent(); printer->Print( - "if (service_ != nullptr) {\n" - " return service_;\n" + "if (service_) {\n" + " return service_.get();\n" "}\n"); - printer->Print("service_ = new ::grpc::RpcService();\n"); + printer->Print("service_ = std::unique_ptr< ::grpc::RpcService>(new ::grpc::RpcService());\n"); for (int i = 0; i < service->method_count(); ++i) { const grpc::protobuf::MethodDescriptor *method = service->method(i); (*vars)["Idx"] = as_string(i); @@ -1077,7 +1079,7 @@ void PrintSourceService(grpc::protobuf::io::Printer *printer, " std::mem_fn(&$ns$$Service$::Service::$Method$), this)));\n"); } } - printer->Print("return service_;\n"); + printer->Print("return service_.get();\n"); printer->Outdent(); printer->Print("}\n\n"); } From 75a2bbaab2ed7c06c7655c69b00bb89a5c2d3448 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 12 Oct 2015 16:12:04 -0700 Subject: [PATCH 053/111] Refactored some C++ code to improve code reuse --- src/node/ext/call.cc | 12 +++ src/node/ext/call.h | 13 +-- src/node/ext/call_credentials.cc | 13 +-- src/node/ext/channel.cc | 118 +++++++++++++++++----------- src/node/ext/channel.h | 5 ++ src/node/ext/channel_credentials.cc | 13 +-- src/node/ext/server.cc | 49 ++---------- src/node/ext/server_credentials.cc | 15 +--- 8 files changed, 107 insertions(+), 131 deletions(-) diff --git a/src/node/ext/call.cc b/src/node/ext/call.cc index fcad62261fb..fe11905109a 100644 --- a/src/node/ext/call.cc +++ b/src/node/ext/call.cc @@ -83,6 +83,18 @@ using v8::Value; Callback *Call::constructor; Persistent Call::fun_tpl; +/** + * Helper function for throwing errors with a grpc_call_error value. + * Modified from the answer by Gus Goose to + * http://stackoverflow.com/questions/31794200. + */ +Local nanErrorWithCode(const char *msg, grpc_call_error code) { + EscapableHandleScope scope; + Local err = Nan::Error(msg).As(); + Nan::Set(err, Nan::New("code").ToLocalChecked(), Nan::New(code)); + return scope.Escape(err); +} + bool EndsWith(const char *str, const char *substr) { return strcmp(str+strlen(str)-strlen(substr), substr) == 0; } diff --git a/src/node/ext/call.h b/src/node/ext/call.h index dd6c38e4f8e..1e3c3ba18d5 100644 --- a/src/node/ext/call.h +++ b/src/node/ext/call.h @@ -53,18 +53,7 @@ using std::shared_ptr; typedef Nan::Persistent> PersistentValue; -/** - * Helper function for throwing errors with a grpc_call_error value. - * Modified from the answer by Gus Goose to - * http://stackoverflow.com/questions/31794200. - */ -inline v8::Local nanErrorWithCode(const char *msg, - grpc_call_error code) { - Nan::EscapableHandleScope scope; - v8::Local err = Nan::Error(msg).As(); - Nan::Set(err, Nan::New("code").ToLocalChecked(), Nan::New(code)); - return scope.Escape(err); -} +v8::Local nanErrorWithCode(const char *msg, grpc_call_error code); v8::Local ParseMetadata(const grpc_metadata_array *metadata_array); diff --git a/src/node/ext/call_credentials.cc b/src/node/ext/call_credentials.cc index 839bb567e48..ff16a1f1221 100644 --- a/src/node/ext/call_credentials.cc +++ b/src/node/ext/call_credentials.cc @@ -126,16 +126,9 @@ NAN_METHOD(CallCredentials::New) { info.GetReturnValue().Set(info.This()); return; } else { - const int argc = 1; - Local argv[argc] = {info[0]}; - MaybeLocal maybe_instance = constructor->GetFunction()->NewInstance( - argc, argv); - if (maybe_instance.IsEmpty()) { - // There's probably a pending exception - return; - } else { - info.GetReturnValue().Set(maybe_instance.ToLocalChecked()); - } + // This should never be called directly + return Nan::ThrowTypeError( + "CallCredentials can only be created with the provided functions"); } } diff --git a/src/node/ext/channel.cc b/src/node/ext/channel.cc index a328c017130..584a0cf8abf 100644 --- a/src/node/ext/channel.cc +++ b/src/node/ext/channel.cc @@ -71,6 +71,72 @@ using v8::Value; Callback *Channel::constructor; Persistent Channel::fun_tpl; +bool ParseChannelArgs(Local args_val, + grpc_channel_args **channel_args_ptr) { + if (args_val->IsUndefined() || args_val->IsNull()) { + *channel_args_ptr = NULL; + return true; + } + if (!args_val->IsObject()) { + *channel_args_ptr = NULL; + return false; + } + grpc_channel_args *channel_args = reinterpret_cast( + malloc(sizeof(channel_args))); + *channel_args_ptr = channel_args; + Local args_hash = Nan::To(args_val).ToLocalChecked(); + Local keys = Nan::GetOwnPropertyNames(args_hash).ToLocalChecked(); + channel_args->num_args = keys->Length(); + channel_args->args = reinterpret_cast( + calloc(channel_args->num_args, sizeof(grpc_arg))); + for (unsigned int i = 0; i < channel_args->num_args; i++) { + Local key = Nan::Get(keys, i).ToLocalChecked(); + Utf8String key_str(key); + if (*key_str == NULL) { + // Key string onversion failed + return false; + } + Local value = Nan::Get(args_hash, key).ToLocalChecked(); + if (value->IsInt32()) { + channel_args->args[i].type = GRPC_ARG_INTEGER; + channel_args->args[i].value.integer = Nan::To(value).FromJust(); + } else if (value->IsString()) { + Utf8String val_str(value); + channel_args->args[i].type = GRPC_ARG_STRING; + channel_args->args[i].value.string = reinterpret_cast( + calloc(val_str.length() + 1,sizeof(char))); + memcpy(channel_args->args[i].value.string, + *val_str, val_str.length() + 1); + } else { + // The value does not match either of the accepted types + return false; + } + channel_args->args[i].key = reinterpret_cast( + calloc(key_str.length() + 1, sizeof(char))); + memcpy(channel_args->args[i].key, *key_str, key_str.length() + 1); + } + return true; +} + +void DeallocateChannelArgs(grpc_channel_args *channel_args) { + if (channel_args == NULL) { + return; + } + for (size_t i = 0; i < channel_args->num_args; i++) { + if (channel_args->args[i].key == NULL) { + /* NULL key implies that this argument and all subsequent arguments failed + * to parse */ + break; + } + free(channel_args->args[i].key); + if (channel_args->args[i].type == GRPC_ARG_STRING) { + free(channel_args->args[i].value.string); + } + } + free(channel_args->args); + free(channel_args); +} + Channel::Channel(grpc_channel *channel) : wrapped_channel(channel) {} Channel::~Channel() { @@ -119,49 +185,11 @@ NAN_METHOD(Channel::New) { ChannelCredentials *creds_object = ObjectWrap::Unwrap( Nan::To(info[1]).ToLocalChecked()); creds = creds_object->GetWrappedCredentials(); - grpc_channel_args *channel_args_ptr; - if (info[2]->IsUndefined()) { - channel_args_ptr = NULL; - wrapped_channel = grpc_insecure_channel_create(*host, NULL, NULL); - } else if (info[2]->IsObject()) { - Local args_hash = Nan::To(info[2]).ToLocalChecked(); - Local keys(Nan::GetOwnPropertyNames(args_hash).ToLocalChecked()); - grpc_channel_args channel_args; - channel_args.num_args = keys->Length(); - channel_args.args = reinterpret_cast( - calloc(channel_args.num_args, sizeof(grpc_arg))); - /* These are used to keep all strings until then end of the block, then - destroy them */ - std::vector key_strings(keys->Length()); - std::vector value_strings(keys->Length()); - for (unsigned int i = 0; i < channel_args.num_args; i++) { - MaybeLocal maybe_key = Nan::To( - Nan::Get(keys, i).ToLocalChecked()); - if (maybe_key.IsEmpty()) { - free(channel_args.args); - return Nan::ThrowTypeError("Arg keys must be strings"); - } - Local current_key = maybe_key.ToLocalChecked(); - Local current_value = Nan::Get(args_hash, - current_key).ToLocalChecked(); - key_strings[i] = new Nan::Utf8String(current_key); - channel_args.args[i].key = **key_strings[i]; - if (current_value->IsInt32()) { - channel_args.args[i].type = GRPC_ARG_INTEGER; - channel_args.args[i].value.integer = Nan::To( - current_value).FromJust(); - } else if (current_value->IsString()) { - channel_args.args[i].type = GRPC_ARG_STRING; - value_strings[i] = new Nan::Utf8String(current_value); - channel_args.args[i].value.string = **value_strings[i]; - } else { - free(channel_args.args); - return Nan::ThrowTypeError("Arg values must be strings"); - } - } - channel_args_ptr = &channel_args; - } else { - return Nan::ThrowTypeError("Channel expects a string and an object"); + grpc_channel_args *channel_args_ptr = NULL; + if (!ParseChannelArgs(info[2], &channel_args_ptr)) { + DeallocateChannelArgs(channel_args_ptr); + return Nan::ThrowTypeError("Channel options must be an object with " + "string keys and integer or string values"); } if (creds == NULL) { wrapped_channel = grpc_insecure_channel_create(*host, channel_args_ptr, @@ -170,9 +198,7 @@ NAN_METHOD(Channel::New) { wrapped_channel = grpc_secure_channel_create(creds, *host, channel_args_ptr, NULL); } - if (channel_args_ptr != NULL) { - free(channel_args_ptr->args); - } + DeallocateChannelArgs(channel_args_ptr); Channel *channel = new Channel(wrapped_channel); channel->Wrap(info.This()); info.GetReturnValue().Set(info.This()); diff --git a/src/node/ext/channel.h b/src/node/ext/channel.h index 0062fd03f4a..9ec28e15af0 100644 --- a/src/node/ext/channel.h +++ b/src/node/ext/channel.h @@ -41,6 +41,11 @@ namespace grpc { namespace node { +bool ParseChannelArgs(v8::Local args_val, + grpc_channel_args **channel_args_ptr); + +void DeallocateChannelArgs(grpc_channel_args *channel_args); + /* Wrapper class for grpc_channel structs */ class Channel : public Nan::ObjectWrap { public: diff --git a/src/node/ext/channel_credentials.cc b/src/node/ext/channel_credentials.cc index 3d47ff293df..7ca3b9816cf 100644 --- a/src/node/ext/channel_credentials.cc +++ b/src/node/ext/channel_credentials.cc @@ -127,16 +127,9 @@ NAN_METHOD(ChannelCredentials::New) { info.GetReturnValue().Set(info.This()); return; } else { - const int argc = 1; - Local argv[argc] = {info[0]}; - MaybeLocal maybe_instance = constructor->GetFunction()->NewInstance( - argc, argv); - if (maybe_instance.IsEmpty()) { - // There's probably a pending exception - return; - } else { - info.GetReturnValue().Set(maybe_instance.ToLocalChecked()); - } + // This should never be called directly + return Nan::ThrowTypeError( + "ChannelCredentials can only be created with the provided functions"); } } diff --git a/src/node/ext/server.cc b/src/node/ext/server.cc index 87363fc446b..b9e1fe91601 100644 --- a/src/node/ext/server.cc +++ b/src/node/ext/server.cc @@ -182,49 +182,14 @@ NAN_METHOD(Server::New) { } grpc_server *wrapped_server; grpc_completion_queue *queue = CompletionQueueAsyncWorker::GetQueue(); - if (info[0]->IsUndefined()) { - wrapped_server = grpc_server_create(NULL, NULL); - } else if (info[0]->IsObject()) { - Local args_hash = Nan::To(info[0]).ToLocalChecked(); - Local keys = Nan::GetOwnPropertyNames(args_hash).ToLocalChecked(); - grpc_channel_args channel_args; - channel_args.num_args = keys->Length(); - channel_args.args = reinterpret_cast( - calloc(channel_args.num_args, sizeof(grpc_arg))); - /* These are used to keep all strings until then end of the block, then - destroy them */ - std::vector key_strings(keys->Length()); - std::vector value_strings(keys->Length()); - for (unsigned int i = 0; i < channel_args.num_args; i++) { - MaybeLocal maybe_key = Nan::To( - Nan::Get(keys, i).ToLocalChecked()); - if (maybe_key.IsEmpty()) { - free(channel_args.args); - return Nan::ThrowTypeError("Arg keys must be strings"); - } - Local current_key = maybe_key.ToLocalChecked(); - Local current_value = Nan::Get(args_hash, - current_key).ToLocalChecked(); - key_strings[i] = new Utf8String(current_key); - channel_args.args[i].key = **key_strings[i]; - if (current_value->IsInt32()) { - channel_args.args[i].type = GRPC_ARG_INTEGER; - channel_args.args[i].value.integer = Nan::To( - current_value).FromJust(); - } else if (current_value->IsString()) { - channel_args.args[i].type = GRPC_ARG_STRING; - value_strings[i] = new Utf8String(current_value); - channel_args.args[i].value.string = **value_strings[i]; - } else { - free(channel_args.args); - return Nan::ThrowTypeError("Arg values must be strings"); - } - } - wrapped_server = grpc_server_create(&channel_args, NULL); - free(channel_args.args); - } else { - return Nan::ThrowTypeError("Server expects an object"); + grpc_channel_args *channel_args; + if (!ParseChannelArgs(info[0], &channel_args)) { + DeallocateChannelArgs(channel_args); + return Nan::ThrowTypeError("Server options must be an object with " + "string keys and integer or string values"); } + wrapped_server = grpc_server_create(channel_args, NULL); + DeallocateChannelArgs(channel_args); grpc_server_register_completion_queue(wrapped_server, queue, NULL); Server *server = new Server(wrapped_server); server->Wrap(info.This()); diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc index 5e922bd877d..e6c55e263cb 100644 --- a/src/node/ext/server_credentials.cc +++ b/src/node/ext/server_credentials.cc @@ -117,7 +117,7 @@ NAN_METHOD(ServerCredentials::New) { if (info.IsConstructCall()) { if (!info[0]->IsExternal()) { return Nan::ThrowTypeError( - "ServerCredentials can only be created with the provide functions"); + "ServerCredentials can only be created with the provided functions"); } Local ext = info[0].As(); grpc_server_credentials *creds_value = @@ -126,16 +126,9 @@ NAN_METHOD(ServerCredentials::New) { credentials->Wrap(info.This()); info.GetReturnValue().Set(info.This()); } else { - const int argc = 1; - Local argv[argc] = {info[0]}; - MaybeLocal maybe_instance = constructor->GetFunction()->NewInstance( - argc, argv); - if (maybe_instance.IsEmpty()) { - // There's probably a pending exception - return; - } else { - info.GetReturnValue().Set(maybe_instance.ToLocalChecked()); - } + // This should never be called directly + return Nan::ThrowTypeError( + "ServerCredentials can only be created with the provided functions"); } } From 71f50361bfdc60f3f293c38189e46c3bed43440e Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 12 Oct 2015 16:12:18 -0700 Subject: [PATCH 054/111] Added some more tests to increase coverage --- src/node/test/call_test.js | 6 ++++++ src/node/test/channel_test.js | 6 ++++++ src/node/test/surface_test.js | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/src/node/test/call_test.js b/src/node/test/call_test.js index b7f4f565105..f1f86b35db3 100644 --- a/src/node/test/call_test.js +++ b/src/node/test/call_test.js @@ -107,6 +107,12 @@ describe('call', function() { new grpc.Call(channel, 'method', 'now'); }, TypeError); }); + it('should succeed without the new keyword', function() { + assert.doesNotThrow(function() { + var call = grpc.Call(channel, 'method', new Date()); + assert(call instanceof grpc.Call); + }); + }); }); describe('deadline', function() { it('should time out immediately with negative deadline', function(done) { diff --git a/src/node/test/channel_test.js b/src/node/test/channel_test.js index 5bcf63ee50b..7163a5fb5ee 100644 --- a/src/node/test/channel_test.js +++ b/src/node/test/channel_test.js @@ -104,6 +104,12 @@ describe('channel', function() { new grpc.Channel('hostname', insecureCreds, {'key' : new Date()}); }); }); + it('should succeed without the new keyword', function() { + assert.doesNotThrow(function() { + var channel = grpc.Channel('hostname', insecureCreds); + assert(channel instanceof grpc.Channel); + }); + }); }); describe('close', function() { var channel; diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index 71801c38dd1..8aa76fd1eff 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -365,6 +365,18 @@ describe('Echo metadata', function() { done(); }); }); + it('properly handles duplicate values', function(done) { + var dup_metadata = metadata.clone(); + dup_metadata.add('key', 'value2'); + var call = client.unary({}, function(err, data) {assert.ifError(err); }, + dup_metadata); + call.on('metadata', function(resp_metadata) { + // Two arrays are equal iff their symmetric difference is empty + assert.deepEqual(_.xor(dup_metadata.get('key'), resp_metadata.get('key')), + []); + done(); + }); + }); }); describe('Other conditions', function() { var test_service; From c1440e3cf4f145157facec19ed73c34ff7f476f3 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Tue, 13 Oct 2015 01:32:50 +0200 Subject: [PATCH 055/111] Derp. --- tools/run_tests/post_tests_c.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/run_tests/post_tests_c.sh b/tools/run_tests/post_tests_c.sh index e8cfee30e15..996c10a0705 100755 --- a/tools/run_tests/post_tests_c.sh +++ b/tools/run_tests/post_tests_c.sh @@ -36,7 +36,6 @@ root=`readlink -f $(dirname $0)/../..` out=$root/reports/c_cxx_coverage tmp=`mktemp` cd $root -tools/run_tests/run_tests.py -c gcov -l c c++ || true lcov --capture --directory . --output-file $tmp genhtml $tmp --output-directory $out rm $tmp From 18729a05e59c93eb258eb0a72cf2af4c22b28041 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Thu, 8 Oct 2015 18:40:00 -0700 Subject: [PATCH 056/111] Polishing of C# auth API --- ...erceptors.cs => GoogleAuthInterceptors.cs} | 6 +- ...redentials.cs => GoogleGrpcCredentials.cs} | 57 ++++++++++--------- src/csharp/Grpc.Auth/Grpc.Auth.csproj | 4 +- .../Grpc.Core.Tests/CallCredentialsTest.cs | 4 +- .../Grpc.Core.Tests/ChannelCredentialsTest.cs | 6 -- src/csharp/Grpc.Core/CallCredentials.cs | 30 ++++++---- src/csharp/Grpc.Core/ChannelCredentials.cs | 33 ----------- .../Grpc.IntegrationTesting/InteropClient.cs | 8 +-- .../MetadataCredentialsTest.cs | 2 +- 9 files changed, 62 insertions(+), 88 deletions(-) rename src/csharp/Grpc.Auth/{AuthInterceptors.cs => GoogleAuthInterceptors.cs} (95%) rename src/csharp/Grpc.Auth/{GrpcCredentials.cs => GoogleGrpcCredentials.cs} (52%) diff --git a/src/csharp/Grpc.Auth/AuthInterceptors.cs b/src/csharp/Grpc.Auth/GoogleAuthInterceptors.cs similarity index 95% rename from src/csharp/Grpc.Auth/AuthInterceptors.cs rename to src/csharp/Grpc.Auth/GoogleAuthInterceptors.cs index fa925667751..1c14c5bb5b4 100644 --- a/src/csharp/Grpc.Auth/AuthInterceptors.cs +++ b/src/csharp/Grpc.Auth/GoogleAuthInterceptors.cs @@ -41,10 +41,10 @@ using Grpc.Core.Utils; namespace Grpc.Auth { /// - /// Factory methods to create authorization interceptors. - /// + /// Factory methods to create authorization interceptors for Google credentials. + /// /// - public static class AuthInterceptors + public static class GoogleAuthInterceptors { private const string AuthorizationHeader = "Authorization"; private const string Schema = "Bearer"; diff --git a/src/csharp/Grpc.Auth/GrpcCredentials.cs b/src/csharp/Grpc.Auth/GoogleGrpcCredentials.cs similarity index 52% rename from src/csharp/Grpc.Auth/GrpcCredentials.cs rename to src/csharp/Grpc.Auth/GoogleGrpcCredentials.cs index d8b10804c6e..a1e7db13bdf 100644 --- a/src/csharp/Grpc.Auth/GrpcCredentials.cs +++ b/src/csharp/Grpc.Auth/GoogleGrpcCredentials.cs @@ -33,6 +33,7 @@ using System; using System.Threading; +using System.Threading.Tasks; using Google.Apis.Auth.OAuth2; using Grpc.Core; @@ -41,53 +42,55 @@ using Grpc.Core.Utils; namespace Grpc.Auth { /// - /// Factory methods to create instances of and classes. + /// Factory/extension methods to create instances of and classes + /// based on credential objects originating from Google auth library. /// - public static class GrpcCredentials + public static class GoogleGrpcCredentials { /// - /// Creates a instance that will obtain access tokens - /// from any credential that implements ITokenAccess. (e.g. GoogleCredential). + /// Retrieves an instance of Google's Application Default Credentials using + /// GoogleCredential.GetApplicationDefaultAsync() and converts them + /// into a gRPC that use the default SSL credentials. /// - /// The credential to use to obtain access tokens. - /// The MetadataCredentials instance. - public static MetadataCredentials Create(ITokenAccess credential) + /// The ChannelCredentials instance. + public static async Task GetApplicationDefaultAsync() { - return new MetadataCredentials(AuthInterceptors.FromCredential(credential)); + var googleCredential = await GoogleCredential.GetApplicationDefaultAsync().ConfigureAwait(false); + return googleCredential.ToChannelCredentials(); } /// - /// Convenience method to create a instance from - /// ITokenAccess credential and SslCredentials instance. + /// Creates an instance of that will use given access token to authenticate + /// with a gRPC service. /// - /// The credential to use to obtain access tokens. - /// The SslCredentials instance. - /// The channel credentials for access token based auth over a secure channel. - public static ChannelCredentials Create(ITokenAccess credential, SslCredentials sslCredentials) + /// OAuth2 access token. + /// /// The MetadataCredentials instance. + public static CallCredentials FromAccessToken(string accessToken) { - return ChannelCredentials.Create(sslCredentials, Create(credential)); + return CallCredentials.FromInterceptor(GoogleAuthInterceptors.FromAccessToken(accessToken)); } /// - /// Creates an instance of that will use given access token to authenticate - /// with a gRPC service. + /// Converts a ITokenAccess (e.g. GoogleCredential) object + /// into a gRPC object. /// - /// OAuth2 access token. - /// /// The MetadataCredentials instance. - public static MetadataCredentials FromAccessToken(string accessToken) + /// The credential to use to obtain access tokens. + /// The CallCredentials instance. + public static CallCredentials ToCallCredentials(this ITokenAccess credential) { - return new MetadataCredentials(AuthInterceptors.FromAccessToken(accessToken)); + return CallCredentials.FromInterceptor(GoogleAuthInterceptors.FromCredential(credential)); } /// - /// Converts a ITokenAccess object into a object supported - /// by gRPC. + /// Converts a ITokenAccess (e.g. GoogleCredential) object + /// into a gRPC object. + /// Default SSL credentials are used. /// - /// - /// - public static MetadataCredentials ToGrpcCredentials(this ITokenAccess credential) + /// The credential to use to obtain access tokens. + /// >The ChannelCredentials instance. + public static ChannelCredentials ToChannelCredentials(this ITokenAccess googleCredential) { - return GrpcCredentials.Create(credential); + return ChannelCredentials.Create(new SslCredentials(), googleCredential.ToCallCredentials()); } } } diff --git a/src/csharp/Grpc.Auth/Grpc.Auth.csproj b/src/csharp/Grpc.Auth/Grpc.Auth.csproj index 80ab07d2ae5..55bde6e1942 100644 --- a/src/csharp/Grpc.Auth/Grpc.Auth.csproj +++ b/src/csharp/Grpc.Auth/Grpc.Auth.csproj @@ -78,9 +78,9 @@ Version.cs - + - + diff --git a/src/csharp/Grpc.Core.Tests/CallCredentialsTest.cs b/src/csharp/Grpc.Core.Tests/CallCredentialsTest.cs index 451963229a4..82f881969eb 100644 --- a/src/csharp/Grpc.Core.Tests/CallCredentialsTest.cs +++ b/src/csharp/Grpc.Core.Tests/CallCredentialsTest.cs @@ -55,8 +55,8 @@ namespace Grpc.Core.Tests public void CallCredentials_ToNativeCredentials() { var composite = CallCredentials.Compose( - new MetadataCredentials(async (uri, m) => { await Task.Delay(1); }), - new MetadataCredentials(async (uri, m) => { await Task.Delay(2); })); + CallCredentials.FromInterceptor(async (uri, m) => { await Task.Delay(1); }), + CallCredentials.FromInterceptor(async (uri, m) => { await Task.Delay(2); })); using (var nativeComposite = composite.ToNativeCredentials()) { } diff --git a/src/csharp/Grpc.Core.Tests/ChannelCredentialsTest.cs b/src/csharp/Grpc.Core.Tests/ChannelCredentialsTest.cs index 489bf385756..d5315ed39b4 100644 --- a/src/csharp/Grpc.Core.Tests/ChannelCredentialsTest.cs +++ b/src/csharp/Grpc.Core.Tests/ChannelCredentialsTest.cs @@ -63,11 +63,5 @@ namespace Grpc.Core.Tests // forbid composing non-composable Assert.Throws(typeof(ArgumentException), () => ChannelCredentials.Create(new FakeChannelCredentials(false), new FakeCallCredentials())); } - - [Test] - public void ChannelCredentials_CreateWrapped() - { - ChannelCredentials.Create(new FakeCallCredentials()); - } } } diff --git a/src/csharp/Grpc.Core/CallCredentials.cs b/src/csharp/Grpc.Core/CallCredentials.cs index 809c9f412d0..400a9825de2 100644 --- a/src/csharp/Grpc.Core/CallCredentials.cs +++ b/src/csharp/Grpc.Core/CallCredentials.cs @@ -40,6 +40,14 @@ using Grpc.Core.Utils; namespace Grpc.Core { + /// + /// Asynchronous authentication interceptor for . + /// + /// URL of a service to which current remote call needs to authenticate + /// Metadata to populate with entries that will be added to outgoing call's headers. + /// + public delegate Task AsyncAuthInterceptor(string authUri, Metadata metadata); + /// /// Client-side call credentials. Provide authorization with per-call granularity. /// @@ -56,6 +64,16 @@ namespace Grpc.Core return new CompositeCallCredentials(credentials); } + /// + /// Creates a new instance of CallCredentials class from an + /// interceptor that can attach metadata to outgoing calls. + /// + /// authentication interceptor + public static CallCredentials FromInterceptor(AsyncAuthInterceptor interceptor) + { + return new MetadataCredentials(interceptor); + } + /// /// Creates native object for the credentials. /// @@ -63,19 +81,11 @@ namespace Grpc.Core internal abstract CredentialsSafeHandle ToNativeCredentials(); } - /// - /// Asynchronous authentication interceptor for . - /// - /// URL of a service to which current remote call needs to authenticate - /// Metadata to populate with entries that will be added to outgoing call's headers. - /// - public delegate Task AsyncAuthInterceptor(string authUri, Metadata metadata); - /// /// Client-side credentials that delegate metadata based auth to an interceptor. /// The interceptor is automatically invoked for each remote call that uses MetadataCredentials. /// - public class MetadataCredentials : CallCredentials + internal sealed class MetadataCredentials : CallCredentials { readonly AsyncAuthInterceptor interceptor; @@ -85,7 +95,7 @@ namespace Grpc.Core /// authentication interceptor public MetadataCredentials(AsyncAuthInterceptor interceptor) { - this.interceptor = interceptor; + this.interceptor = Preconditions.CheckNotNull(interceptor); } internal override CredentialsSafeHandle ToNativeCredentials() diff --git a/src/csharp/Grpc.Core/ChannelCredentials.cs b/src/csharp/Grpc.Core/ChannelCredentials.cs index 599674e02bd..9d2bcdabe84 100644 --- a/src/csharp/Grpc.Core/ChannelCredentials.cs +++ b/src/csharp/Grpc.Core/ChannelCredentials.cs @@ -71,17 +71,6 @@ namespace Grpc.Core return new CompositeChannelCredentials(channelCredentials, callCredentials); } - /// - /// Creates a new instance of ChannelCredentials by wrapping - /// an instance of CallCredentials. - /// - /// Call credentials. - /// The ChannelCredentials wrapping given call credentials. - public static ChannelCredentials Create(CallCredentials callCredentials) - { - return new WrappedCallCredentials(callCredentials); - } - /// /// Creates native object for the credentials. May return null if insecure channel /// should be created. @@ -213,26 +202,4 @@ namespace Grpc.Core } } } - - /// - /// Credentials wrapping as . - /// - internal sealed class WrappedCallCredentials : ChannelCredentials - { - readonly CallCredentials callCredentials; - - /// - /// Wraps instance of CallCredentials as ChannelCredentials. - /// - /// credentials to wrap - public WrappedCallCredentials(CallCredentials callCredentials) - { - this.callCredentials = Preconditions.CheckNotNull(callCredentials); - } - - internal override CredentialsSafeHandle ToNativeCredentials() - { - return callCredentials.ToNativeCredentials(); - } - } } diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs index cb50b44841f..030a098cad3 100644 --- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs +++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs @@ -143,14 +143,14 @@ namespace Grpc.IntegrationTesting { var googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); Assert.IsTrue(googleCredential.IsCreateScopedRequired); - credentials = ChannelCredentials.Create(credentials, googleCredential.ToGrpcCredentials()); + credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials()); } if (options.TestCase == "compute_engine_creds") { var googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); Assert.IsFalse(googleCredential.IsCreateScopedRequired); - credentials = ChannelCredentials.Create(credentials, googleCredential.ToGrpcCredentials()); + credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials()); } return credentials; } @@ -392,7 +392,7 @@ namespace Grpc.IntegrationTesting ITokenAccess credential = (await GoogleCredential.GetApplicationDefaultAsync()).CreateScoped(new[] { oauthScope }); string oauth2Token = await credential.GetAccessTokenForRequestAsync(); - var credentials = GrpcCredentials.FromAccessToken(oauth2Token); + var credentials = GoogleGrpcCredentials.FromAccessToken(oauth2Token); var request = new SimpleRequest { FillUsername = true, @@ -412,7 +412,7 @@ namespace Grpc.IntegrationTesting Console.WriteLine("running per_rpc_creds"); ITokenAccess googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); - var credentials = GrpcCredentials.Create(googleCredential); + var credentials = googleCredential.ToCallCredentials(); var request = new SimpleRequest { FillUsername = true, diff --git a/src/csharp/Grpc.IntegrationTesting/MetadataCredentialsTest.cs b/src/csharp/Grpc.IntegrationTesting/MetadataCredentialsTest.cs index 5325b2fa148..3d56678b990 100644 --- a/src/csharp/Grpc.IntegrationTesting/MetadataCredentialsTest.cs +++ b/src/csharp/Grpc.IntegrationTesting/MetadataCredentialsTest.cs @@ -75,7 +75,7 @@ namespace Grpc.IntegrationTesting var clientCredentials = ChannelCredentials.Create( new SslCredentials(File.ReadAllText(TestCredentials.ClientCertAuthorityPath)), - new MetadataCredentials(asyncAuthInterceptor)); + CallCredentials.FromInterceptor(asyncAuthInterceptor)); channel = new Channel(Host, server.Ports.Single().BoundPort, clientCredentials, options); client = TestService.NewClient(channel); } From 5354d5536caea5a41f18f3705fa93ef2d8df327e Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Sun, 11 Oct 2015 13:37:13 -0700 Subject: [PATCH 057/111] Pod install in the example project --- .../HelloWorld.xcodeproj/project.pbxproj | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj b/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj index 702ad3ff8b2..cd5d249cdcc 100644 --- a/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj +++ b/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj @@ -110,6 +110,7 @@ 5E36905D1B2A23800040F884 /* Frameworks */, 5E36905E1B2A23800040F884 /* Resources */, 4C7D815378D98AB3BFC1A7D5 /* Copy Pods Resources */, + BB76529986A8BFAF19A385B1 /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -195,6 +196,21 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; + BB76529986A8BFAF19A385B1 /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ From 9544ce73c356fd3a7c93eff237cabac691e2af0b Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Sun, 11 Oct 2015 13:51:17 -0700 Subject: [PATCH 058/111] pod install project --- .../helloworld/HelloWorld.xcodeproj/project.pbxproj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj b/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj index cd5d249cdcc..250f009996f 100644 --- a/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj +++ b/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 3EF35C14BDC2B65E21837F02 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 43AB08B32839A6700EA00DD4 /* libPods.a */; }; 5E3690661B2A23800040F884 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E3690651B2A23800040F884 /* main.m */; }; 5E3690691B2A23800040F884 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E3690681B2A23800040F884 /* AppDelegate.m */; }; 5E36906C1B2A23800040F884 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E36906B1B2A23800040F884 /* ViewController.m */; }; @@ -17,6 +18,7 @@ /* Begin PBXFileReference section */ 0C432EF610DB15C0F47A66BB /* Pods-HelloWorld.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld.release.xcconfig"; path = "Pods/Target Support Files/Pods-HelloWorld/Pods-HelloWorld.release.xcconfig"; sourceTree = ""; }; + 43AB08B32839A6700EA00DD4 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5E3690601B2A23800040F884 /* HelloWorld.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5E3690641B2A23800040F884 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5E3690651B2A23800040F884 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -35,6 +37,7 @@ buildActionMask = 2147483647; files = ( EF61CF6AE2536A31D47F0E63 /* libPods-HelloWorld.a in Frameworks */, + 3EF35C14BDC2B65E21837F02 /* libPods.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -85,6 +88,7 @@ isa = PBXGroup; children = ( 6B4E1F55F8A2EC95A0E7EE88 /* libPods-HelloWorld.a */, + 43AB08B32839A6700EA00DD4 /* libPods.a */, ); name = Frameworks; sourceTree = ""; @@ -208,7 +212,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ From dfe91b547162f1cbedf13a780d9aaff439ac7137 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Sun, 11 Oct 2015 13:51:07 -0700 Subject: [PATCH 059/111] Fix example pod files --- examples/objective-c/helloworld/HelloWorld.podspec | 10 +++++----- examples/objective-c/helloworld/Podfile | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/examples/objective-c/helloworld/HelloWorld.podspec b/examples/objective-c/helloworld/HelloWorld.podspec index ae009a688c6..600898f976e 100644 --- a/examples/objective-c/helloworld/HelloWorld.podspec +++ b/examples/objective-c/helloworld/HelloWorld.podspec @@ -3,13 +3,13 @@ Pod::Spec.new do |s| s.version = "0.0.1" s.license = "New BSD" - s.ios.deployment_target = "6.0" - s.osx.deployment_target = "10.8" + s.ios.deployment_target = "7.1" + s.osx.deployment_target = "10.9" # Base directory where the .proto files are. src = "../../protos" - # Directory where the generated files will be place. + # Directory where the generated files will be placed. dir = "Pods/" + s.name # Run protoc with the Objective-C and gRPC plugins to generate protocol messages and gRPC clients. @@ -22,14 +22,14 @@ Pod::Spec.new do |s| ms.source_files = "#{dir}/*.pbobjc.{h,m}", "#{dir}/**/*.pbobjc.{h,m}" ms.header_mappings_dir = dir ms.requires_arc = false - ms.dependency "Protobuf", "~> 3.0.0-alpha-3" + ms.dependency "Protobuf", "~> 3.0.0-alpha-4" end s.subspec "Services" do |ss| ss.source_files = "#{dir}/*.pbrpc.{h,m}", "#{dir}/**/*.pbrpc.{h,m}" ss.header_mappings_dir = dir ss.requires_arc = true - ss.dependency "gRPC", "~> 0.6" + ss.dependency "gRPC", "~> 0.11" ss.dependency "#{s.name}/Messages" end end diff --git a/examples/objective-c/helloworld/Podfile b/examples/objective-c/helloworld/Podfile index 2934ebc2c8a..16af075a9fa 100644 --- a/examples/objective-c/helloworld/Podfile +++ b/examples/objective-c/helloworld/Podfile @@ -1,6 +1,9 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' +pod 'Protobuf', :path => "../../../third_party/protobuf" +pod 'gRPC', :path => "../../.." + target 'HelloWorld' do # Depend on the generated HelloWorld library. pod 'HelloWorld', :path => '.' From 2fe0dcd06bdb6d76a3ff2a0b0f9b6d5e2e6a0a05 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Sun, 11 Oct 2015 13:53:49 -0700 Subject: [PATCH 060/111] Fix example to Beta version --- examples/objective-c/helloworld/main.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/objective-c/helloworld/main.m b/examples/objective-c/helloworld/main.m index 458580be302..a62f8362a22 100644 --- a/examples/objective-c/helloworld/main.m +++ b/examples/objective-c/helloworld/main.m @@ -34,18 +34,24 @@ #import #import "AppDelegate.h" +#import #import -static NSString * const kHostAddress = @"http://localhost:50051"; +static NSString * const kHostAddress = @"localhost:50051"; int main(int argc, char * argv[]) { @autoreleasepool { + [GRPCCall useInsecureConnectionsForHost:kHostAddress]; + HLWGreeter *client = [[HLWGreeter alloc] initWithHost:kHostAddress]; + HLWHelloRequest *request = [HLWHelloRequest message]; request.name = @"Objective-C"; + [client sayHelloWithRequest:request handler:^(HLWHelloReply *response, NSError *error) { NSLog(@"%@", response.message); }]; + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } From 740a1cc7c34e4e750cfd6b9dfaca30a6f90c8123 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Sun, 11 Oct 2015 13:37:40 -0700 Subject: [PATCH 061/111] Git ignore XCode derived files across the repo --- .gitignore | 19 +++++++++++++++++++ src/objective-c/.gitignore | 19 ------------------- 2 files changed, 19 insertions(+), 19 deletions(-) delete mode 100644 src/objective-c/.gitignore diff --git a/.gitignore b/.gitignore index 45f8fdaa46f..6006619fcbc 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,22 @@ report.xml # port server log portlog.txt + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +*.DS_Store diff --git a/src/objective-c/.gitignore b/src/objective-c/.gitignore deleted file mode 100644 index 15110668007..00000000000 --- a/src/objective-c/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -# Xcode -# -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -*.DS_Store \ No newline at end of file From 494f7da271f5fb23ed9810f7200928ef64077d9f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 12 Oct 2015 19:56:17 -0700 Subject: [PATCH 062/111] Remove extra line --- tools/profiling/latency_profile/profile_analyzer.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/profiling/latency_profile/profile_analyzer.py b/tools/profiling/latency_profile/profile_analyzer.py index 6de2fe735c8..b12e1074e52 100755 --- a/tools/profiling/latency_profile/profile_analyzer.py +++ b/tools/profiling/latency_profile/profile_analyzer.py @@ -48,7 +48,6 @@ class ScopeBuilder(object): line_item.end_time = line_item.start_time self.call_stack_builder.lines.append(line_item) - def finish(self, line): assert line['tag'] == self.top_line.tag, 'expected %s, got %s' % (self.top_line.tag, line['tag']) final_time_stamp = line['t'] From af6f3ac555402f74ef36526844218d5fae8560a5 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Mon, 12 Oct 2015 22:01:33 -0700 Subject: [PATCH 063/111] regenerated projects --- binding.gyp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index 392835c7721..a91e0e11bf5 100644 --- a/binding.gyp +++ b/binding.gyp @@ -165,8 +165,6 @@ 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -197,6 +195,8 @@ 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -210,6 +210,7 @@ 'src/core/json/json_writer.c', 'src/core/profiling/basic_timers.c', 'src/core/profiling/stap_timers.c', + 'src/core/surface/alarm.c', 'src/core/surface/api_trace.c', 'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer_queue.c', From 4964b6b86a0240d39890588de2e971fbb26c7c44 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 13 Oct 2015 08:24:28 -0700 Subject: [PATCH 064/111] add run_interop.sh jenins script --- tools/jenkins/run_interop.sh | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 tools/jenkins/run_interop.sh diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh new file mode 100755 index 00000000000..c80c374acee --- /dev/null +++ b/tools/jenkins/run_interop.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env 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. +# +# This script is invoked by Jenkins and runs interop test suite. +set -ex + +# Enter the gRPC repo root +cd `dirname $0`/../.. + +tools/run_tests/run_interop_tests.py --l all --s all --cloud_to_prod --use_docker -t -j 8 From 265dfc0d038d37009f752a476021c396efffced5 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 13 Oct 2015 09:37:49 -0700 Subject: [PATCH 065/111] use recommended syntax for command subtitution --- tools/jenkins/run_interop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh index c80c374acee..61398933f3b 100755 --- a/tools/jenkins/run_interop.sh +++ b/tools/jenkins/run_interop.sh @@ -32,6 +32,6 @@ set -ex # Enter the gRPC repo root -cd `dirname $0`/../.. +cd $(dirname $0)/../.. tools/run_tests/run_interop_tests.py --l all --s all --cloud_to_prod --use_docker -t -j 8 From 8c894e41b8ffbacb31c15120f8a47ed645b8cc82 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 13 Oct 2015 09:40:27 -0700 Subject: [PATCH 066/111] enable propagating per-jenkins job args --- tools/jenkins/run_interop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh index 61398933f3b..072812b3ba4 100755 --- a/tools/jenkins/run_interop.sh +++ b/tools/jenkins/run_interop.sh @@ -34,4 +34,4 @@ set -ex # Enter the gRPC repo root cd $(dirname $0)/../.. -tools/run_tests/run_interop_tests.py --l all --s all --cloud_to_prod --use_docker -t -j 8 +tools/run_tests/run_interop_tests.py --l all --s all --cloud_to_prod --use_docker -t -j 8 $@ || true From 18cc842d6fab8a485461a9cfc6f33dc6048f14d1 Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi Date: Fri, 9 Oct 2015 17:55:45 -0700 Subject: [PATCH 067/111] Add Python support to run_interop_tests.py --- tools/jenkins/grpc_interop_python/Dockerfile | 80 +++++++++++++++++++ .../grpc_interop_python/build_interop.sh | 47 +++++++++++ tools/run_tests/run_interop_tests.py | 64 ++++++++++++++- 3 files changed, 187 insertions(+), 4 deletions(-) create mode 100644 tools/jenkins/grpc_interop_python/Dockerfile create mode 100755 tools/jenkins/grpc_interop_python/build_interop.sh diff --git a/tools/jenkins/grpc_interop_python/Dockerfile b/tools/jenkins/grpc_interop_python/Dockerfile new file mode 100644 index 00000000000..5850f5f321e --- /dev/null +++ b/tools/jenkins/grpc_interop_python/Dockerfile @@ -0,0 +1,80 @@ +# 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. + +# A work-in-progress Dockerfile that allows running gRPC test suites +# inside a docker container. + +FROM debian:jessie + +# Install Git. +RUN apt-get update && apt-get install -y \ + autoconf \ + autotools-dev \ + build-essential \ + bzip2 \ + ccache \ + curl \ + gcc \ + gcc-multilib \ + git \ + gyp \ + libc6 \ + libc6-dbg \ + libc6-dev \ + libgtest-dev \ + libtool \ + make \ + strace \ + python-dev \ + python-pip \ + python-setuptools \ + python-yaml \ + telnet \ + unzip \ + wget \ + zip && apt-get clean + +# Prepare ccache +RUN ln -s /usr/bin/ccache /usr/local/bin/gcc +RUN ln -s /usr/bin/ccache /usr/local/bin/g++ +RUN ln -s /usr/bin/ccache /usr/local/bin/cc +RUN ln -s /usr/bin/ccache /usr/local/bin/c++ +RUN ln -s /usr/bin/ccache /usr/local/bin/clang +RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ + + +##################### +# Python dependencies + +# Install Python requisites +RUN /bin/bash -l -c "pip install --upgrade pip" +RUN /bin/bash -l -c "pip install virtualenv" + +# Define the default command. +CMD ["bash"] diff --git a/tools/jenkins/grpc_interop_python/build_interop.sh b/tools/jenkins/grpc_interop_python/build_interop.sh new file mode 100755 index 00000000000..8f5bfd11e20 --- /dev/null +++ b/tools/jenkins/grpc_interop_python/build_interop.sh @@ -0,0 +1,47 @@ +#!/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 Python interop server and client in a base image. +set -e + +mkdir -p /var/local/git +git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc + +# copy service account keys if available +cp -r /var/local/jenkins/service_account $HOME || true + +cd /var/local/git/grpc + +make install-certs +make + +# build Python interop client and server +CONFIG=opt ./tools/run_tests/build_python.sh 2.7 + diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 6daa967bba4..33ebcbcc41f 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -56,7 +56,7 @@ _CLOUD_TO_PROD_BASE_ARGS = [ _CLOUD_TO_CLOUD_BASE_ARGS = [ '--server_host_override=foo.test.google.fr'] -# TOOD(jtattermusch) wrapped languages use this variable for location +# TOOD(jtattermusch) wrapped languages use this variable for location # of roots.pem. We might want to use GRPC_DEFAULT_SSL_ROOTS_FILE_PATH # supported by C core SslCredentials instead. _SSL_CERT_ENV = { 'SSL_CERT_FILE':'/usr/local/share/grpc/roots.pem' } @@ -87,6 +87,9 @@ class CXXLanguage: def server_args(self): return ['bins/opt/interop_server', '--use_tls=true'] + def global_env(self): + return {} + def __str__(self): return 'c++' @@ -113,6 +116,9 @@ class CSharpLanguage: def server_args(self): return ['mono', 'Grpc.IntegrationTesting.Server.exe', '--use_tls=true'] + def global_env(self): + return {} + def __str__(self): return 'csharp' @@ -139,6 +145,9 @@ class JavaLanguage: def server_args(self): return ['./run-test-server.sh', '--use_tls=true'] + def global_env(self): + return {} + def __str__(self): return 'java' @@ -166,6 +175,9 @@ class GoLanguage: def server_args(self): return ['go', 'run', 'server.go', '--use_tls=true'] + def global_env(self): + return {} + def __str__(self): return 'go' @@ -192,6 +204,9 @@ class NodeLanguage: def server_args(self): return ['node', 'src/node/interop/interop_server.js', '--use_tls=true'] + def global_env(self): + return {} + def __str__(self): return 'node' @@ -214,6 +229,9 @@ class PHPLanguage: def cloud_to_prod_env(self): return _SSL_CERT_ENV + def global_env(self): + return {} + def __str__(self): return 'php' @@ -240,11 +258,42 @@ class RubyLanguage: def server_args(self): return ['ruby', 'src/ruby/bin/interop/interop_server.rb', '--use_tls'] + def global_env(self): + return {} + def __str__(self): return 'ruby' -# TODO(jtattermusch): python once we get it working +class PythonLanguage: + + def __init__(self): + self.client_cmdline_base = ['python2.7_virtual_environment/bin/python', '-m', 'grpc_interop.client'] + self.client_cwd = None + self.server_cwd = None + self.safename = str(self) + + def cloud_to_prod_args(self): + return (self.client_cmdline_base + _CLOUD_TO_PROD_BASE_ARGS + + ['--use_tls']) + + def cloud_to_cloud_args(self): + return (self.client_cmdline_base + _CLOUD_TO_CLOUD_BASE_ARGS + + ['--use_tls', '--use_test_ca']) + + def cloud_to_prod_env(self): + return _SSL_CERT_ENV + + def server_args(self): + return ['python2.7_virtual_environment/bin/python', '-m', 'grpc_interop.server', '--use_tls'] + + def global_env(self): + return {'LD_LIBRARY_PATH': 'libs/opt'} + + def __str__(self): + return 'python' + + _LANGUAGES = { 'c++' : CXXLanguage(), 'csharp' : CSharpLanguage(), @@ -253,10 +302,11 @@ _LANGUAGES = { 'node' : NodeLanguage(), 'php' : PHPLanguage(), 'ruby' : RubyLanguage(), + 'python' : PythonLanguage(), } # languages supported as cloud_to_cloud servers -_SERVERS = ['c++', 'node', 'csharp', 'java', 'go', 'ruby'] +_SERVERS = ['c++', 'node', 'csharp', 'java', 'go', 'ruby', 'python'] # TODO(jtattermusch): add timeout_on_sleeping_server once java starts supporting it. _TEST_CASES = ['large_unary', 'empty_unary', 'ping_pong', @@ -335,7 +385,7 @@ def cloud_to_prod_jobspec(language, test_case, docker_image=None, auth=False): """Creates jobspec for cloud-to-prod interop test""" cmdline = language.cloud_to_prod_args() + ['--test_case=%s' % test_case] cwd = language.client_cwd - environ = language.cloud_to_prod_env() + environ = dict(language.cloud_to_prod_env(), **language.global_env()) container_name = None if auth: cmdline, environ = add_auth_options(language, test_case, cmdline, environ) @@ -374,10 +424,12 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host, '--server_host=%s' % server_host, '--server_port=%s' % server_port ]) cwd = language.client_cwd + environ = language.global_env() if docker_image: container_name = dockerjob.random_name('interop_client_%s' % language.safename) cmdline = docker_run_cmdline(cmdline, image=docker_image, + environ=environ, cwd=cwd, docker_args=['--net=host', '--name', container_name]) @@ -386,6 +438,7 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host, test_job = jobset.JobSpec( cmdline=cmdline, cwd=cwd, + environ=environ, shortname="cloud_to_cloud:%s:%s_server:%s" % (language, server_name, test_case), timeout_seconds=2*60, @@ -401,13 +454,16 @@ def server_jobspec(language, docker_image): container_name = dockerjob.random_name('interop_server_%s' % language.safename) cmdline = bash_login_cmdline(language.server_args() + ['--port=%s' % _DEFAULT_SERVER_PORT]) + environ = language.global_env() docker_cmdline = docker_run_cmdline(cmdline, image=docker_image, cwd=language.server_cwd, + environ=environ, docker_args=['-p', str(_DEFAULT_SERVER_PORT), '--name', container_name]) server_job = jobset.JobSpec( cmdline=docker_cmdline, + environ=environ, shortname="interop_server_%s" % language, timeout_seconds=30*60) server_job.container_name = container_name From dd30134eecdf23d9b6d68931eba82b98d99000b0 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 13 Oct 2015 13:01:01 -0700 Subject: [PATCH 068/111] fix a nit --- tools/jenkins/run_interop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh index 072812b3ba4..14e075691cd 100755 --- a/tools/jenkins/run_interop.sh +++ b/tools/jenkins/run_interop.sh @@ -34,4 +34,4 @@ set -ex # Enter the gRPC repo root cd $(dirname $0)/../.. -tools/run_tests/run_interop_tests.py --l all --s all --cloud_to_prod --use_docker -t -j 8 $@ || true +tools/run_tests/run_interop_tests.py -l all -s all --cloud_to_prod --use_docker -t -j 8 $@ || true From 7cfee089ddb3d6b997f7be3d4c6b035a15957ca5 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 13 Oct 2015 13:49:55 -0700 Subject: [PATCH 069/111] Added more tests, removed some unused code, fixed a bug --- src/node/src/client.js | 1 + src/node/src/common.js | 11 +-- src/node/test/credentials_test.js | 44 +++++++++ src/node/test/surface_test.js | 157 ++++++++++++++++++++++++++++++ 4 files changed, 205 insertions(+), 8 deletions(-) diff --git a/src/node/src/client.js b/src/node/src/client.js index 909376e7664..596ea5ebb0b 100644 --- a/src/node/src/client.js +++ b/src/node/src/client.js @@ -661,6 +661,7 @@ exports.waitForClientReady = function(client, deadline, callback) { var checkState = function(err) { if (err) { callback(new Error('Failed to connect before the deadline')); + return; } var new_state = client.$channel.getConnectivityState(true); if (new_state === grpc.connectivityState.READY) { diff --git a/src/node/src/common.js b/src/node/src/common.js index 5551ebeec84..ebaaa13db0f 100644 --- a/src/node/src/common.js +++ b/src/node/src/common.js @@ -87,14 +87,9 @@ exports.fullyQualifiedName = function fullyQualifiedName(value) { return ''; } var name = value.name; - if (value.className === 'Service.RPCMethod') { - name = _.capitalize(name); - } - if (value.hasOwnProperty('parent')) { - var parent_name = fullyQualifiedName(value.parent); - if (parent_name !== '') { - name = parent_name + '.' + name; - } + var parent_name = fullyQualifiedName(value.parent); + if (parent_name !== '') { + name = parent_name + '.' + name; } return name; }; diff --git a/src/node/test/credentials_test.js b/src/node/test/credentials_test.js index 960405ab3b9..3ee38c574b6 100644 --- a/src/node/test/credentials_test.js +++ b/src/node/test/credentials_test.js @@ -60,6 +60,22 @@ function multiDone(done, count) { }; } +var fakeSuccessfulGoogleCredentials = { + getRequestMetadata: function(service_url, callback) { + setTimeout(function() { + callback(null, {Authorization: 'success'}); + }, 0); + } +}; + +var fakeFailingGoogleCredentials = { + getRequestMetadata: function(service_url, callback) { + setTimeout(function() { + callback(new Error("Authorization failure")); + }, 0); + } +}; + describe('client credentials', function() { var Client; var server; @@ -187,6 +203,34 @@ describe('client credentials', function() { done(); }); }); + it('should successfully wrap a Google credential', function(done) { + var creds = grpc.credentials.createFromGoogleCredential( + fakeSuccessfulGoogleCredentials); + var combined_creds = grpc.credentials.combineChannelCredentials( + client_ssl_creds, creds); + var client = new Client('localhost:' + port, combined_creds, + client_options); + var call = client.unary({}, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + assert.deepStrictEqual(metadata.get('authorization'), ['success']); + done(); + }); + }); + it.skip('should get an error from a Google credential', function(done) { + var creds = grpc.credentials.createFromGoogleCredential( + fakeFailingGoogleCredentials); + var combined_creds = grpc.credentials.combineChannelCredentials( + client_ssl_creds, creds); + var client = new Client('localhost:' + port, combined_creds, + client_options); + client.unary({}, function(err, data) { + assert(err); + assert.strictEqual(err.message, 'Authorization failure'); + done(); + }); + }); describe('Per-rpc creds', function() { var client; var updater_creds; diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js index 8aa76fd1eff..39673e4e05b 100644 --- a/src/node/test/surface_test.js +++ b/src/node/test/surface_test.js @@ -92,6 +92,31 @@ describe('File loader', function() { }); }); }); +describe('surface Server', function() { + var server; + beforeEach(function() { + server = new grpc.Server(); + }); + afterEach(function() { + server.forceShutdown(); + }); + it('should error if started twice', function() { + server.start(); + assert.throws(function() { + server.start(); + }); + }); + it('should error if a port is bound after the server starts', function() { + server.start(); + assert.throws(function() { + server.bind('localhost:0', grpc.ServerCredentials.createInsecure()); + }); + }); + it('should successfully shutdown if tryShutdown is called', function(done) { + server.start(); + server.tryShutdown(done); + }); +}); describe('Server.prototype.addProtoService', function() { var server; var dummyImpls = { @@ -202,6 +227,16 @@ describe('waitForClientReady', function() { }); }); }); + it('should time out if the server does not exist', function(done) { + var bad_client = new Client('nonexistent_hostname', + grpc.credentials.createInsecure()); + var deadline = new Date(); + deadline.setSeconds(deadline.getSeconds() + 1); + grpc.waitForClientReady(bad_client, deadline, function(error) { + assert(error); + done(); + }); + }); }); describe('Echo service', function() { var server; @@ -378,6 +413,111 @@ describe('Echo metadata', function() { }); }); }); +describe('Client malformed response handling', function() { + var server; + var client; + var badArg = new Buffer([0xFF]); + before(function() { + var test_proto = ProtoBuf.loadProtoFile(__dirname + '/test_service.proto'); + var test_service = test_proto.lookup('TestService'); + var malformed_test_service = { + unary: { + path: '/TestService/Unary', + requestStream: false, + responseStream: false, + requestDeserialize: _.identity, + responseSerialize: _.identity + }, + clientStream: { + path: '/TestService/ClientStream', + requestStream: true, + responseStream: false, + requestDeserialize: _.identity, + responseSerialize: _.identity + }, + serverStream: { + path: '/TestService/ServerStream', + requestStream: false, + responseStream: true, + requestDeserialize: _.identity, + responseSerialize: _.identity + }, + bidiStream: { + path: '/TestService/BidiStream', + requestStream: true, + responseStream: true, + requestDeserialize: _.identity, + responseSerialize: _.identity + } + }; + server = new grpc.Server(); + server.addService(malformed_test_service, { + unary: function(call, cb) { + cb(null, badArg); + }, + clientStream: function(stream, cb) { + stream.on('data', function() {/* Ignore requests */}); + stream.on('end', function() { + cb(null, badArg); + }); + }, + serverStream: function(stream) { + stream.write(badArg); + stream.end(); + }, + bidiStream: function(stream) { + stream.on('data', function() { + // Ignore requests + stream.write(badArg); + }); + stream.on('end', function() { + stream.end(); + }); + } + }); + var port = server.bind('localhost:0', server_insecure_creds); + var Client = surface_client.makeProtobufClientConstructor(test_service); + client = new Client('localhost:' + port, grpc.credentials.createInsecure()); + server.start(); + }); + after(function() { + server.forceShutdown(); + }); + it('should get an INTERNAL status with a unary call', function(done) { + client.unary({}, function(err, data) { + assert(err); + assert.strictEqual(err.code, grpc.status.INTERNAL); + done(); + }); + }); + it('should get an INTERNAL status with a client stream call', function(done) { + var call = client.clientStream(function(err, data) { + assert(err); + assert.strictEqual(err.code, grpc.status.INTERNAL); + done(); + }); + call.write({}); + call.end(); + }); + it('should get an INTERNAL status with a server stream call', function(done) { + var call = client.serverStream({}); + call.on('data', function(){}); + call.on('error', function(err) { + assert.strictEqual(err.code, grpc.status.INTERNAL); + done(); + }); + }); + it('should get an INTERNAL status with a bidi stream call', function(done) { + var call = client.bidiStream(); + call.on('data', function(){}); + call.on('error', function(err) { + assert.strictEqual(err.code, grpc.status.INTERNAL); + done(); + }); + call.write({}); + call.end(); + }); +}); describe('Other conditions', function() { var test_service; var Client; @@ -461,6 +601,23 @@ describe('Other conditions', function() { assert.strictEqual(typeof grpc.getClientChannel(client).getTarget(), 'string'); }); + it('client should be able to pause and resume a stream', function(done) { + var call = client.bidiStream(); + call.on('data', function(data) { + assert(data.count < 3); + call.pause(); + setTimeout(function() { + call.resume(); + }, 10); + }); + call.on('end', function() { + done(); + }); + call.write({}); + call.write({}); + call.write({}); + call.end(); + }); describe('Server recieving bad input', function() { var misbehavingClient; var badArg = new Buffer([0xFF]); From 7eacdd480309d87d53ed63f5304ba1607f21f7f9 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Tue, 13 Oct 2015 23:00:36 +0200 Subject: [PATCH 070/111] Changing backticks to $(). --- tools/run_tests/post_tests_c.sh | 4 ++-- tools/run_tests/run_lcov.sh | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/run_tests/post_tests_c.sh b/tools/run_tests/post_tests_c.sh index 996c10a0705..f2f3ce9432d 100755 --- a/tools/run_tests/post_tests_c.sh +++ b/tools/run_tests/post_tests_c.sh @@ -32,9 +32,9 @@ set -ex if [ "$CONFIG" != "gcov" ] ; then exit ; fi -root=`readlink -f $(dirname $0)/../..` +root=$(readlink -f $(dirname $0)/../..) out=$root/reports/c_cxx_coverage -tmp=`mktemp` +tmp=$(mktemp) cd $root lcov --capture --directory . --output-file $tmp genhtml $tmp --output-directory $out diff --git a/tools/run_tests/run_lcov.sh b/tools/run_tests/run_lcov.sh index 62bbd8c24b7..a28ec138bb6 100755 --- a/tools/run_tests/run_lcov.sh +++ b/tools/run_tests/run_lcov.sh @@ -30,10 +30,10 @@ set -ex -out=`readlink -f ${1:-coverage}` +out=$(readlink -f ${1:-coverage}) -root=`readlink -f $(dirname $0)/../..` -tmp=`mktemp` +root=$(readlink -f $(dirname $0)/../..) +tmp=$(mktemp) cd $root tools/run_tests/run_tests.py -c gcov -l c c++ || true lcov --capture --directory . --output-file $tmp From 738e91e8d1f4f942f486fad319fb9a62df81c8e2 Mon Sep 17 00:00:00 2001 From: Hongyu Chen Date: Tue, 13 Oct 2015 15:05:00 -0700 Subject: [PATCH 071/111] Fix call data init in census grpc filter. --- src/core/census/grpc_filter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/census/grpc_filter.c b/src/core/census/grpc_filter.c index 3545307b666..872543057e2 100644 --- a/src/core/census/grpc_filter.c +++ b/src/core/census/grpc_filter.c @@ -132,6 +132,7 @@ static void client_init_call_elem(grpc_exec_ctx *exec_ctx, grpc_transport_stream_op *initial_op) { call_data *d = elem->call_data; GPR_ASSERT(d != NULL); + memset(d, 0, sizeof(*d)); d->start_ts = gpr_now(GPR_CLOCK_REALTIME); if (initial_op) client_mutate_op(elem, initial_op); } @@ -149,6 +150,7 @@ static void server_init_call_elem(grpc_exec_ctx *exec_ctx, grpc_transport_stream_op *initial_op) { call_data *d = elem->call_data; GPR_ASSERT(d != NULL); + memset(d, 0, sizeof(*d)); d->start_ts = gpr_now(GPR_CLOCK_REALTIME); /* TODO(hongyu): call census_tracing_start_op here. */ grpc_closure_init(d->on_done_recv, server_on_done_recv, elem); From c52dfac9997d66a2f9d98df0bbb55984d988129e Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 13 Oct 2015 15:37:34 -0700 Subject: [PATCH 072/111] Fixed error in Node credentials test --- src/node/test/credentials_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node/test/credentials_test.js b/src/node/test/credentials_test.js index 3ee38c574b6..3d0b38fd52d 100644 --- a/src/node/test/credentials_test.js +++ b/src/node/test/credentials_test.js @@ -214,7 +214,7 @@ describe('client credentials', function() { assert.ifError(err); }); call.on('metadata', function(metadata) { - assert.deepStrictEqual(metadata.get('authorization'), ['success']); + assert.deepEqual(metadata.get('authorization'), ['success']); done(); }); }); From a89d9e764ca915fcb1bba4b730be6f0a7044a6bb Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 13 Oct 2015 16:03:16 -0700 Subject: [PATCH 073/111] Made build flags consistent in Node gcov build --- binding.gyp | 34 ++++++++++++++++++---------------- templates/binding.gyp.template | 34 ++++++++++++++++++---------------- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/binding.gyp b/binding.gyp index 392835c7721..6dcb2d012cb 100644 --- a/binding.gyp +++ b/binding.gyp @@ -54,6 +54,24 @@ 'include_dirs': [ '.', 'include' + ], + 'conditions': [ + ['OS != "win"', { + 'conditions': [ + ['config=="gcov"', { + 'cflags': [ + '-ftest-coverage', + '-fprofile-arcs', + '-O0' + ], + 'ldflags': [ + '-ftest-coverage', + '-fprofile-arcs' + ] + } + ] + ] + }], ] }, 'targets': [ @@ -278,22 +296,6 @@ '-g' ], "conditions": [ - ['OS != "win"', { - 'conditions': [ - ['config=="gcov"', { - 'cflags': [ - '-ftest-coverage', - '-fprofile-arcs', - '-O0' - ], - 'ldflags': [ - '-ftest-coverage', - '-fprofile-arcs' - ] - } - ] - ] - }], ['OS == "mac"', { 'xcode_settings': { 'MACOSX_DEPLOYMENT_TARGET': '10.9', diff --git a/templates/binding.gyp.template b/templates/binding.gyp.template index 50d0823d1d4..bfa6a56bf6b 100644 --- a/templates/binding.gyp.template +++ b/templates/binding.gyp.template @@ -56,6 +56,24 @@ 'include_dirs': [ '.', 'include' + ], + 'conditions': [ + ['OS != "win"', { + 'conditions': [ + ['config=="gcov"', { + 'cflags': [ + '-ftest-coverage', + '-fprofile-arcs', + '-O0' + ], + 'ldflags': [ + '-ftest-coverage', + '-fprofile-arcs' + ] + } + ] + ] + }], ] }, 'targets': [ @@ -95,22 +113,6 @@ '-g' ], "conditions": [ - ['OS != "win"', { - 'conditions': [ - ['config=="gcov"', { - 'cflags': [ - '-ftest-coverage', - '-fprofile-arcs', - '-O0' - ], - 'ldflags': [ - '-ftest-coverage', - '-fprofile-arcs' - ] - } - ] - ] - }], ['OS == "mac"', { 'xcode_settings': { 'MACOSX_DEPLOYMENT_TARGET': '10.9', From 9b81d9945e80b33815f68499c9809ab934b2a687 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Mon, 12 Oct 2015 19:31:25 -0700 Subject: [PATCH 074/111] =?UTF-8?q?Undo=20Cocoapods=E2=80=99=20bug=20worka?= =?UTF-8?q?round?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gRPC.podspec | 37 ++++--------------- templates/gRPC.podspec.template | 63 ++++++++++----------------------- 2 files changed, 25 insertions(+), 75 deletions(-) diff --git a/gRPC.podspec b/gRPC.podspec index 69c370e2c0c..a9d544d9263 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -36,7 +36,7 @@ Pod::Spec.new do |s| s.name = 'gRPC' - version = '0.11.1' + version = '0.11.2' s.version = version s.summary = 'gRPC client library for iOS/OSX' s.homepage = 'http://www.grpc.io' @@ -46,6 +46,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/grpc/grpc.git', :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" } + s.ios.deployment_target = '7.1' s.osx.deployment_target = '10.9' s.requires_arc = true @@ -66,7 +67,7 @@ Pod::Spec.new do |s| 'src/core/support/file.h', 'src/core/support/murmur_hash.h', 'src/core/support/stack_lockfree.h', - 'src/core/support/grpc_string.h', + 'src/core/support/string.h', 'src/core/support/string_win32.h', 'src/core/support/thd_internal.h', 'src/core/support/time_precise.h', @@ -91,7 +92,7 @@ Pod::Spec.new do |s| 'grpc/support/sync_posix.h', 'grpc/support/sync_win32.h', 'grpc/support/thd.h', - 'grpc/support/grpc_time.h', + 'grpc/support/time.h', 'grpc/support/tls.h', 'grpc/support/tls_gcc.h', 'grpc/support/tls_msvc.h', @@ -535,34 +536,10 @@ Pod::Spec.new do |s| # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w' end - # This is a workaround for Cocoapods Issue #1437. - # It renames time.h and string.h to grpc_time.h and grpc_string.h. - # It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run + # Move contents of include/ up a level to avoid manually specifying include paths. + # This needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run # prepare_command's of subspecs. - # - # TODO(jcanizales): Try out others' solutions at Issue #1437. - s.prepare_command = <<-CMD - # Move contents of include up a level to avoid manually specifying include paths - cp -r "include/grpc" "." - - DIR_TIME="grpc/support" - BAD_TIME="$DIR_TIME/time.h" - GOOD_TIME="$DIR_TIME/grpc_time.h" - grep -rl "$BAD_TIME" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g - if [ -f "$BAD_TIME" ]; - then - mv -f "$BAD_TIME" "$GOOD_TIME" - fi - - DIR_STRING="src/core/support" - BAD_STRING="$DIR_STRING/string.h" - GOOD_STRING="$DIR_STRING/grpc_string.h" - grep -rl "$BAD_STRING" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g - if [ -f "$BAD_STRING" ]; - then - mv -f "$BAD_STRING" "$GOOD_STRING" - fi - CMD + s.prepare_command = 'cp -r "include/grpc" "."' # Objective-C wrapper around the core gRPC library. s.subspec 'GRPCClient' do |ss| diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template index d1b55adabf9..c0887783e2c 100644 --- a/templates/gRPC.podspec.template +++ b/templates/gRPC.podspec.template @@ -5,7 +5,7 @@ # Please look at the templates directory instead. # This file can be regenerated from the template by running # tools/buildgen/generate_projects.sh - + # Copyright 2015, Google Inc. # All rights reserved. # @@ -34,13 +34,10 @@ # 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. - + <%! - bad_header_names = ('time.h', 'string.h') def fix_header_name(name): split_name = name.split('/') - if split_name[-1] in bad_header_names: - split_name[-1] = 'grpc_' + split_name[-1] if split_name[0] == 'include': split_name = split_name[1:] return '/'.join(split_name) @@ -63,7 +60,7 @@ %> Pod::Spec.new do |s| s.name = 'gRPC' - version = '0.11.1' + version = '0.11.2' s.version = version s.summary = 'gRPC client library for iOS/OSX' s.homepage = 'http://www.grpc.io' @@ -79,7 +76,7 @@ s.requires_arc = true objc_dir = 'src/objective-c' - + # Reactive Extensions library for iOS. s.subspec 'RxLibrary' do |ss| src_dir = "#{objc_dir}/RxLibrary" @@ -87,71 +84,47 @@ ss.private_header_files = "#{src_dir}/private/*.h" ss.header_mappings_dir = "#{objc_dir}" end - + # Core cross-platform gRPC library, written in C. s.subspec 'C-Core' do |ss| ss.source_files = ${(',\n' + 22*' ').join('\'%s\'' % f for f in grpc_files(libs))} - + ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))} - + ss.header_mappings_dir = '.' - + ss.requires_arc = false ss.libraries = 'z' ss.dependency 'OpenSSL', '~> 1.0.200' - + # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w' end - - # This is a workaround for Cocoapods Issue #1437. - # It renames time.h and string.h to grpc_time.h and grpc_string.h. - # It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run + + # Move contents of include/ up a level to avoid manually specifying include paths. + # This needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run # prepare_command's of subspecs. - # - # TODO(jcanizales): Try out others' solutions at Issue #1437. - s.prepare_command = <<-CMD - # Move contents of include up a level to avoid manually specifying include paths - cp -r "include/grpc" "." - - DIR_TIME="grpc/support" - BAD_TIME="$DIR_TIME/time.h" - GOOD_TIME="$DIR_TIME/grpc_time.h" - grep -rl "$BAD_TIME" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g - if [ -f "$BAD_TIME" ]; - then - mv -f "$BAD_TIME" "$GOOD_TIME" - fi - - DIR_STRING="src/core/support" - BAD_STRING="$DIR_STRING/string.h" - GOOD_STRING="$DIR_STRING/grpc_string.h" - grep -rl "$BAD_STRING" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g - if [ -f "$BAD_STRING" ]; - then - mv -f "$BAD_STRING" "$GOOD_STRING" - fi - CMD - + s.prepare_command = 'cp -r "include/grpc" "."' + # Objective-C wrapper around the core gRPC library. s.subspec 'GRPCClient' do |ss| src_dir = "#{objc_dir}/GRPCClient" ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}" ss.private_header_files = "#{src_dir}/private/*.h" ss.header_mappings_dir = "#{objc_dir}" - + ss.dependency 'gRPC/C-Core' ss.dependency 'gRPC/RxLibrary' - + # Certificates, to be able to establish TLS connections: ss.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] } end - + # RPC library for ProtocolBuffers, based on gRPC s.subspec 'ProtoRPC' do |ss| src_dir = "#{objc_dir}/ProtoRPC" ss.source_files = "#{src_dir}/*.{h,m}" ss.header_mappings_dir = "#{objc_dir}" - + ss.dependency 'gRPC/GRPCClient' ss.dependency 'gRPC/RxLibrary' ss.dependency 'Protobuf', '~> 3.0.0-alpha-4' From dc460d28c086a1a2d14036d76f3a94b74131b4bd Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Tue, 13 Oct 2015 13:04:54 -0700 Subject: [PATCH 075/111] Undo moving include/ one dir up, to ease testing workflow. --- gRPC.podspec | 75 ++++++++++++++++----------------- templates/gRPC.podspec.template | 21 +++------ 2 files changed, 42 insertions(+), 54 deletions(-) diff --git a/gRPC.podspec b/gRPC.podspec index a9d544d9263..c056d717c86 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -71,33 +71,33 @@ Pod::Spec.new do |s| 'src/core/support/string_win32.h', 'src/core/support/thd_internal.h', 'src/core/support/time_precise.h', - 'grpc/support/alloc.h', - 'grpc/support/atm.h', - 'grpc/support/atm_gcc_atomic.h', - 'grpc/support/atm_gcc_sync.h', - 'grpc/support/atm_win32.h', - 'grpc/support/cmdline.h', - 'grpc/support/cpu.h', - 'grpc/support/histogram.h', - 'grpc/support/host_port.h', - 'grpc/support/log.h', - 'grpc/support/log_win32.h', - 'grpc/support/port_platform.h', - 'grpc/support/slice.h', - 'grpc/support/slice_buffer.h', - 'grpc/support/string_util.h', - 'grpc/support/subprocess.h', - 'grpc/support/sync.h', - 'grpc/support/sync_generic.h', - 'grpc/support/sync_posix.h', - 'grpc/support/sync_win32.h', - 'grpc/support/thd.h', - 'grpc/support/time.h', - 'grpc/support/tls.h', - 'grpc/support/tls_gcc.h', - 'grpc/support/tls_msvc.h', - 'grpc/support/tls_pthread.h', - 'grpc/support/useful.h', + 'include/grpc/support/alloc.h', + 'include/grpc/support/atm.h', + 'include/grpc/support/atm_gcc_atomic.h', + 'include/grpc/support/atm_gcc_sync.h', + 'include/grpc/support/atm_win32.h', + 'include/grpc/support/cmdline.h', + 'include/grpc/support/cpu.h', + 'include/grpc/support/histogram.h', + 'include/grpc/support/host_port.h', + 'include/grpc/support/log.h', + 'include/grpc/support/log_win32.h', + 'include/grpc/support/port_platform.h', + 'include/grpc/support/slice.h', + 'include/grpc/support/slice_buffer.h', + 'include/grpc/support/string_util.h', + 'include/grpc/support/subprocess.h', + 'include/grpc/support/sync.h', + 'include/grpc/support/sync_generic.h', + 'include/grpc/support/sync_posix.h', + 'include/grpc/support/sync_win32.h', + 'include/grpc/support/thd.h', + 'include/grpc/support/time.h', + 'include/grpc/support/tls.h', + 'include/grpc/support/tls_gcc.h', + 'include/grpc/support/tls_msvc.h', + 'include/grpc/support/tls_pthread.h', + 'include/grpc/support/useful.h', 'src/core/support/alloc.c', 'src/core/support/cmdline.c', 'src/core/support/cpu_iphone.c', @@ -252,13 +252,13 @@ Pod::Spec.new do |s| 'src/core/census/aggregation.h', 'src/core/census/context.h', 'src/core/census/rpc_metric_id.h', - 'grpc/grpc_security.h', - 'grpc/byte_buffer.h', - 'grpc/byte_buffer_reader.h', - 'grpc/compression.h', - 'grpc/grpc.h', - 'grpc/status.h', - 'grpc/census.h', + 'include/grpc/grpc_security.h', + 'include/grpc/byte_buffer.h', + 'include/grpc/byte_buffer_reader.h', + 'include/grpc/compression.h', + 'include/grpc/grpc.h', + 'include/grpc/status.h', + 'include/grpc/census.h', 'src/core/httpcli/httpcli_security_connector.c', 'src/core/security/base64.c', 'src/core/security/client_auth_filter.c', @@ -528,6 +528,8 @@ Pod::Spec.new do |s| 'src/core/census/rpc_metric_id.h' ss.header_mappings_dir = '.' + ss.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' + + '"$(PODS_ROOT)/Headers/Private/gRPC/include"' } ss.requires_arc = false ss.libraries = 'z' @@ -536,11 +538,6 @@ Pod::Spec.new do |s| # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w' end - # Move contents of include/ up a level to avoid manually specifying include paths. - # This needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run - # prepare_command's of subspecs. - s.prepare_command = 'cp -r "include/grpc" "."' - # Objective-C wrapper around the core gRPC library. s.subspec 'GRPCClient' do |ss| src_dir = "#{objc_dir}/GRPCClient" diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template index c0887783e2c..e396c411a68 100644 --- a/templates/gRPC.podspec.template +++ b/templates/gRPC.podspec.template @@ -36,26 +36,20 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. <%! - def fix_header_name(name): - split_name = name.split('/') - if split_name[0] == 'include': - split_name = split_name[1:] - return '/'.join(split_name) - def grpc_files(libs): out = [] for lib in libs: if lib.name in ("grpc", "gpr"): - out.extend(fix_header_name(h) for h in lib.get('headers', [])) - out.extend(fix_header_name(h) for h in lib.get('public_headers', [])) - out.extend(lib.get('src', [])) + out += lib.get('headers', []) + out += lib.get('public_headers', []) + out += lib.get('src', []) return out; def grpc_private_headers(libs): out = [] for lib in libs: if lib.name in ("grpc", "gpr"): - out.extend(lib.get('headers', [])) + out += lib.get('headers', []) return out %> Pod::Spec.new do |s| @@ -92,6 +86,8 @@ ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))} ss.header_mappings_dir = '.' + ss.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' + + '"$(PODS_ROOT)/Headers/Private/gRPC/include"' } ss.requires_arc = false ss.libraries = 'z' @@ -100,11 +96,6 @@ # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w' end - # Move contents of include/ up a level to avoid manually specifying include paths. - # This needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run - # prepare_command's of subspecs. - s.prepare_command = 'cp -r "include/grpc" "."' - # Objective-C wrapper around the core gRPC library. s.subspec 'GRPCClient' do |ss| src_dir = "#{objc_dir}/GRPCClient" From 208716639db8452fc728ed71dee3581a42e99927 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Tue, 13 Oct 2015 18:12:57 -0700 Subject: [PATCH 076/111] Ignore Objective-C generated files --- .gitignore | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6006619fcbc..7fa2157fa76 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,7 @@ report.xml # port server log portlog.txt -# Xcode +# XCode build/ *.pbxuser !default.pbxuser @@ -58,3 +58,12 @@ DerivedData *.ipa *.xcuserstate *.DS_Store + +# Objective-C generated files +*.pbobjc.* +*.pbrpc.* + +# Cocoapods artifacts +# Podfile.lock and the workspace file are tracked, to ease deleting them. That's +# needed to trigger "pod install" to rerun the preinstall commands. +Pods/ From 2e516e4b0c635f973f7075df2cc0c61ad19ad422 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Tue, 13 Oct 2015 18:36:00 -0700 Subject: [PATCH 077/111] Refer to https://github.com/CocoaPods/CocoaPods/issues/4386 regarding hack. --- gRPC.podspec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gRPC.podspec b/gRPC.podspec index c056d717c86..1ee2198125f 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -528,6 +528,8 @@ Pod::Spec.new do |s| 'src/core/census/rpc_metric_id.h' ss.header_mappings_dir = '.' + # This isn't officially supported in Cocoapods. We've asked for an alternative: + # https://github.com/CocoaPods/CocoaPods/issues/4386 ss.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' + '"$(PODS_ROOT)/Headers/Private/gRPC/include"' } From 2bac1f98f935d1358b5b1c84960b22701c0cffa1 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Tue, 13 Oct 2015 19:09:25 -0700 Subject: [PATCH 078/111] The Podspec is a template. The Podspec is a template. The Podspec is a template. --- templates/gRPC.podspec.template | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template index e396c411a68..3b96fe28857 100644 --- a/templates/gRPC.podspec.template +++ b/templates/gRPC.podspec.template @@ -86,6 +86,8 @@ ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))} ss.header_mappings_dir = '.' + # This isn't officially supported in Cocoapods. We've asked for an alternative: + # https://github.com/CocoaPods/CocoaPods/issues/4386 ss.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Headers/Private/gRPC" ' + '"$(PODS_ROOT)/Headers/Private/gRPC/include"' } From 7b7a14fd468b39e191fca496b05394a401ced272 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 10:55:17 -0700 Subject: [PATCH 079/111] Fix npm install failing to download Node headers in run_tests.py --- tools/run_tests/run_tests.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index ff8ad8ff784..aa13d89c7bc 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -202,7 +202,9 @@ class NodeLanguage(object): def pre_build_steps(self): # Default to 1 week cache expiration - return [['npm', 'update', '--cache-min', '604800']] + return [['npm', 'update', '--cache-min', '604800'], + ['npm', 'install', '-g', 'node-gyp-install'], + ['node-gyp-install']] def make_targets(self): return [] From 15bc8e7081bee1655cddf36d2a754d84617c105b Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Wed, 14 Oct 2015 10:55:41 -0700 Subject: [PATCH 080/111] allow explicit BUILD_INTEROP_DOCKER_EXTRA_ARGS params to docker run command --- tools/jenkins/build_interop_image.sh | 13 ++++++++----- tools/jenkins/grpc_interop_php/Dockerfile | 8 -------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/tools/jenkins/build_interop_image.sh b/tools/jenkins/build_interop_image.sh index 166efbd9e2f..5dfa2425134 100755 --- a/tools/jenkins/build_interop_image.sh +++ b/tools/jenkins/build_interop_image.sh @@ -33,6 +33,13 @@ set -x +# Params: +# INTEROP_IMAGE - name of tag of the final interop image +# BASE_NAME - base name used to locate the base Dockerfile and build script +# TTY_FLAG - optional -t flag to make docker allocate tty +# BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the +# docker run command + cd `dirname $0`/../.. GRPC_ROOT=`pwd` MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro" @@ -55,11 +62,6 @@ fi mkdir -p /tmp/ccache -# Params: -# INTEROP_IMAGE - name of tag of the final interop image -# BASE_NAME - base name used to locate the base Dockerfile and build script -# TTY_FLAG - optional -t flag to make docker allocate tty. - # Mount service account dir if available. # If service_directory does not contain the service account JSON file, # some of the tests will fail. @@ -84,6 +86,7 @@ CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)" -e CCACHE_DIR=/tmp/ccache \ -i $TTY_FLAG \ $MOUNT_ARGS \ + $BUILD_INTEROP_DOCKER_EXTRA_ARGS \ -v /tmp/ccache:/tmp/ccache \ --name=$CONTAINER_NAME \ $BASE_IMAGE \ diff --git a/tools/jenkins/grpc_interop_php/Dockerfile b/tools/jenkins/grpc_interop_php/Dockerfile index 0edc3c174d4..09da7136917 100644 --- a/tools/jenkins/grpc_interop_php/Dockerfile +++ b/tools/jenkins/grpc_interop_php/Dockerfile @@ -87,12 +87,6 @@ RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" # Install dependencies -RUN /bin/bash -l -c "echo 'deb http://packages.dotdeb.org wheezy-php55 all' \ - >> /etc/apt/sources.list.d/dotdeb.list" -RUN /bin/bash -l -c "echo 'deb-src http://packages.dotdeb.org wheezy-php55 all' \ - >> /etc/apt/sources.list.d/dotdeb.list" -RUN wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add - - RUN apt-get update && apt-get install -y \ git php5 php5-dev phpunit unzip @@ -102,8 +96,6 @@ RUN apt-get update && apt-get install -y \ # rake: a ruby version of make used to build the PHP Protobuf extension RUN /bin/bash -l -c "rvm all do gem install ronn rake" -ENV DEBIAN_FRONTEND noniteractive - # Install composer RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer From 9375895a4de10effecbbd9ed64f027bf5c4475e5 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 11:51:05 -0700 Subject: [PATCH 081/111] Moved Node pre-build steps to a separate shell script --- tools/run_tests/pre_build_node.sh | 40 +++++++++++++++++++++++++++++++ tools/run_tests/run_tests.py | 4 +--- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 tools/run_tests/pre_build_node.sh diff --git a/tools/run_tests/pre_build_node.sh b/tools/run_tests/pre_build_node.sh new file mode 100644 index 00000000000..28ce354f276 --- /dev/null +++ b/tools/run_tests/pre_build_node.sh @@ -0,0 +1,40 @@ +#!/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. + +set -ex + +export GRPC_CONFIG=${CONFIG:-opt} + +# Expire cache after 1 week +npm update --cache-min 604800 + +npm install node-gyp-install +./node_modules/.bin/node-gyp-install diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index aa13d89c7bc..84262aa773a 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -202,9 +202,7 @@ class NodeLanguage(object): def pre_build_steps(self): # Default to 1 week cache expiration - return [['npm', 'update', '--cache-min', '604800'], - ['npm', 'install', '-g', 'node-gyp-install'], - ['node-gyp-install']] + return [['tools/run_tests/pre_build_node.sh']] def make_targets(self): return [] From 5e75dcf4b1d2ba41156a0cc3e9ce95c156c19764 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 11:53:35 -0700 Subject: [PATCH 082/111] Fixed permissions on Node pre build script --- tools/run_tests/pre_build_node.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tools/run_tests/pre_build_node.sh diff --git a/tools/run_tests/pre_build_node.sh b/tools/run_tests/pre_build_node.sh old mode 100644 new mode 100755 From b65e4213a3ab39f546685e6767582021abd688e7 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Wed, 14 Oct 2015 12:00:21 -0700 Subject: [PATCH 083/111] fixed faulty merge --- BUILD | 30 ++-- Makefile | 138 +++++++++--------- binding.gyp | 4 +- build.yaml | 50 +++---- gRPC.podspec | 16 +- tools/doxygen/Doxyfile.core.internal | 10 +- tools/run_tests/sources_and_headers.json | 88 +++++------ tools/run_tests/tests.json | 72 ++++----- vsprojects/buildtests_c.sln | 108 +++++++------- vsprojects/vcxproj/grpc/grpc.vcxproj | 14 +- vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 30 ++-- .../grpc_unsecure/grpc_unsecure.vcxproj | 14 +- .../grpc_unsecure.vcxproj.filters | 30 ++-- .../timer_heap_test.vcxproj} | 8 +- .../timer_heap_test.vcxproj.filters} | 8 +- .../timer_list_test.vcxproj} | 8 +- .../timer_list_test.vcxproj.filters} | 8 +- 17 files changed, 318 insertions(+), 318 deletions(-) rename vsprojects/vcxproj/test/{alarm_heap_test/alarm_heap_test.vcxproj => timer_heap_test/timer_heap_test.vcxproj} (98%) rename vsprojects/vcxproj/test/{alarm_heap_test/alarm_heap_test.vcxproj.filters => timer_heap_test/timer_heap_test.vcxproj.filters} (64%) rename vsprojects/vcxproj/test/{alarm_list_test/alarm_list_test.vcxproj => timer_list_test/timer_list_test.vcxproj} (98%) rename vsprojects/vcxproj/test/{alarm_list_test/alarm_list_test.vcxproj.filters => timer_list_test/timer_list_test.vcxproj.filters} (64%) diff --git a/BUILD b/BUILD index 262b2c6ec00..1b428691086 100644 --- a/BUILD +++ b/BUILD @@ -181,9 +181,6 @@ cc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -211,6 +208,9 @@ cc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -316,8 +316,6 @@ cc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -348,6 +346,8 @@ cc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -465,9 +465,6 @@ cc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -495,6 +492,9 @@ cc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -580,8 +580,6 @@ cc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -612,6 +610,8 @@ cc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -1106,8 +1106,6 @@ objc_library( "src/core/httpcli/format_request.c", "src/core/httpcli/httpcli.c", "src/core/httpcli/parser.c", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm_heap.c", "src/core/iomgr/closure.c", "src/core/iomgr/endpoint.c", "src/core/iomgr/endpoint_pair_posix.c", @@ -1138,6 +1136,8 @@ objc_library( "src/core/iomgr/tcp_server_windows.c", "src/core/iomgr/tcp_windows.c", "src/core/iomgr/time_averaged_stats.c", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer_heap.c", "src/core/iomgr/udp_server.c", "src/core/iomgr/wakeup_fd_eventfd.c", "src/core/iomgr/wakeup_fd_nospecial.c", @@ -1252,9 +1252,6 @@ objc_library( "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -1282,6 +1279,9 @@ objc_library( "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", diff --git a/Makefile b/Makefile index 788fdb52155..e64a587a8d5 100644 --- a/Makefile +++ b/Makefile @@ -777,8 +777,6 @@ systemtap_dep_error: stop: @false -alarm_heap_test: $(BINDIR)/$(CONFIG)/alarm_heap_test -alarm_list_test: $(BINDIR)/$(CONFIG)/alarm_list_test alpn_test: $(BINDIR)/$(CONFIG)/alpn_test bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test chttp2_status_conversion_test: $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test @@ -849,6 +847,8 @@ tcp_posix_test: $(BINDIR)/$(CONFIG)/tcp_posix_test tcp_server_posix_test: $(BINDIR)/$(CONFIG)/tcp_server_posix_test time_averaged_stats_test: $(BINDIR)/$(CONFIG)/time_averaged_stats_test timeout_encoding_test: $(BINDIR)/$(CONFIG)/timeout_encoding_test +timer_heap_test: $(BINDIR)/$(CONFIG)/timer_heap_test +timer_list_test: $(BINDIR)/$(CONFIG)/timer_list_test timers_test: $(BINDIR)/$(CONFIG)/timers_test transport_metadata_test: $(BINDIR)/$(CONFIG)/transport_metadata_test transport_security_test: $(BINDIR)/$(CONFIG)/transport_security_test @@ -1733,7 +1733,7 @@ endif buildtests: buildtests_c buildtests_cxx buildtests_zookeeper -buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test +buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timer_heap_test $(BINDIR)/$(CONFIG)/timer_list_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test buildtests_cxx: buildtests_zookeeper privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/auth_property_iterator_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/client_crash_test $(BINDIR)/$(CONFIG)/client_crash_test_server $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test $(BINDIR)/$(CONFIG)/cxx_slice_test $(BINDIR)/$(CONFIG)/cxx_string_ref_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/qps_interarrival_test $(BINDIR)/$(CONFIG)/qps_openloop_test $(BINDIR)/$(CONFIG)/qps_test $(BINDIR)/$(CONFIG)/reconnect_interop_client $(BINDIR)/$(CONFIG)/reconnect_interop_server $(BINDIR)/$(CONFIG)/secure_auth_context_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/streaming_throughput_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test @@ -1749,10 +1749,6 @@ test: test_c test_cxx test_zookeeper flaky_test: flaky_test_c flaky_test_cxx flaky_test_zookeeper test_c: buildtests_c - $(E) "[RUN] Testing alarm_heap_test" - $(Q) $(BINDIR)/$(CONFIG)/alarm_heap_test || ( echo test alarm_heap_test failed ; exit 1 ) - $(E) "[RUN] Testing alarm_list_test" - $(Q) $(BINDIR)/$(CONFIG)/alarm_list_test || ( echo test alarm_list_test failed ; exit 1 ) $(E) "[RUN] Testing alpn_test" $(Q) $(BINDIR)/$(CONFIG)/alpn_test || ( echo test alpn_test failed ; exit 1 ) $(E) "[RUN] Testing bin_encoder_test" @@ -1873,6 +1869,10 @@ test_c: buildtests_c $(Q) $(BINDIR)/$(CONFIG)/time_averaged_stats_test || ( echo test time_averaged_stats_test failed ; exit 1 ) $(E) "[RUN] Testing timeout_encoding_test" $(Q) $(BINDIR)/$(CONFIG)/timeout_encoding_test || ( echo test timeout_encoding_test failed ; exit 1 ) + $(E) "[RUN] Testing timer_heap_test" + $(Q) $(BINDIR)/$(CONFIG)/timer_heap_test || ( echo test timer_heap_test failed ; exit 1 ) + $(E) "[RUN] Testing timer_list_test" + $(Q) $(BINDIR)/$(CONFIG)/timer_list_test || ( echo test timer_list_test failed ; exit 1 ) $(E) "[RUN] Testing timers_test" $(Q) $(BINDIR)/$(CONFIG)/timers_test || ( echo test timers_test failed ; exit 1 ) $(E) "[RUN] Testing transport_metadata_test" @@ -4077,8 +4077,6 @@ LIBGRPC_SRC = \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ - src/core/iomgr/alarm.c \ - src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -4109,6 +4107,8 @@ LIBGRPC_SRC = \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ + src/core/iomgr/timer.c \ + src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ @@ -4357,8 +4357,6 @@ LIBGRPC_UNSECURE_SRC = \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ - src/core/iomgr/alarm.c \ - src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -4389,6 +4387,8 @@ LIBGRPC_UNSECURE_SRC = \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ + src/core/iomgr/timer.c \ + src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ @@ -6558,64 +6558,6 @@ endif # All of the test targets, and protoc plugins -ALARM_HEAP_TEST_SRC = \ - test/core/iomgr/alarm_heap_test.c \ - -ALARM_HEAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_HEAP_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/alarm_heap_test: openssl_dep_error - -else - -$(BINDIR)/$(CONFIG)/alarm_heap_test: $(ALARM_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - $(E) "[LD] Linking $@" - $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(ALARM_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/alarm_heap_test - -endif - -$(OBJDIR)/$(CONFIG)/test/core/iomgr/alarm_heap_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_alarm_heap_test: $(ALARM_HEAP_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(ALARM_HEAP_TEST_OBJS:.o=.dep) -endif -endif - - -ALARM_LIST_TEST_SRC = \ - test/core/iomgr/alarm_list_test.c \ - -ALARM_LIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_LIST_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/alarm_list_test: openssl_dep_error - -else - -$(BINDIR)/$(CONFIG)/alarm_list_test: $(ALARM_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - $(E) "[LD] Linking $@" - $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(ALARM_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/alarm_list_test - -endif - -$(OBJDIR)/$(CONFIG)/test/core/iomgr/alarm_list_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_alarm_list_test: $(ALARM_LIST_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(ALARM_LIST_TEST_OBJS:.o=.dep) -endif -endif - - ALPN_TEST_SRC = \ test/core/transport/chttp2/alpn_test.c \ @@ -8646,6 +8588,64 @@ endif endif +TIMER_HEAP_TEST_SRC = \ + test/core/iomgr/timer_heap_test.c \ + +TIMER_HEAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_HEAP_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/timer_heap_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/timer_heap_test: $(TIMER_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(TIMER_HEAP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/timer_heap_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/iomgr/timer_heap_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_timer_heap_test: $(TIMER_HEAP_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(TIMER_HEAP_TEST_OBJS:.o=.dep) +endif +endif + + +TIMER_LIST_TEST_SRC = \ + test/core/iomgr/timer_list_test.c \ + +TIMER_LIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_LIST_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/timer_list_test: openssl_dep_error + +else + +$(BINDIR)/$(CONFIG)/timer_list_test: $(TIMER_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LD) $(LDFLAGS) $(TIMER_LIST_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/timer_list_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/iomgr/timer_list_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +deps_timer_list_test: $(TIMER_LIST_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(TIMER_LIST_TEST_OBJS:.o=.dep) +endif +endif + + TIMERS_TEST_SRC = \ test/core/profiling/timers_test.c \ diff --git a/binding.gyp b/binding.gyp index 39036b3b2a8..f886dc1e276 100644 --- a/binding.gyp +++ b/binding.gyp @@ -168,8 +168,6 @@ 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -200,6 +198,8 @@ 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', diff --git a/build.yaml b/build.yaml index 9fd667df7f0..ca343cf509f 100644 --- a/build.yaml +++ b/build.yaml @@ -137,9 +137,6 @@ filegroups: - src/core/httpcli/format_request.h - src/core/httpcli/httpcli.h - src/core/httpcli/parser.h - - src/core/iomgr/alarm.h - - src/core/iomgr/alarm_heap.h - - src/core/iomgr/alarm_internal.h - src/core/iomgr/closure.h - src/core/iomgr/endpoint.h - src/core/iomgr/endpoint_pair.h @@ -167,6 +164,9 @@ filegroups: - src/core/iomgr/tcp_server.h - src/core/iomgr/tcp_windows.h - src/core/iomgr/time_averaged_stats.h + - src/core/iomgr/timer.h + - src/core/iomgr/timer_heap.h + - src/core/iomgr/timer_internal.h - src/core/iomgr/udp_server.h - src/core/iomgr/wakeup_fd_pipe.h - src/core/iomgr/wakeup_fd_posix.h @@ -249,8 +249,6 @@ filegroups: - src/core/httpcli/format_request.c - src/core/httpcli/httpcli.c - src/core/httpcli/parser.c - - src/core/iomgr/alarm.c - - src/core/iomgr/alarm_heap.c - src/core/iomgr/closure.c - src/core/iomgr/endpoint.c - src/core/iomgr/endpoint_pair_posix.c @@ -281,6 +279,8 @@ filegroups: - src/core/iomgr/tcp_server_windows.c - src/core/iomgr/tcp_windows.c - src/core/iomgr/time_averaged_stats.c + - src/core/iomgr/timer.c + - src/core/iomgr/timer_heap.c - src/core/iomgr/udp_server.c - src/core/iomgr/wakeup_fd_eventfd.c - src/core/iomgr/wakeup_fd_nospecial.c @@ -783,26 +783,6 @@ libs: - winsock - global targets: -- name: alarm_heap_test - build: test - language: c - src: - - test/core/iomgr/alarm_heap_test.c - deps: - - grpc_test_util - - grpc - - gpr_test_util - - gpr -- name: alarm_list_test - build: test - language: c - src: - - test/core/iomgr/alarm_list_test.c - deps: - - grpc_test_util - - grpc - - gpr_test_util - - gpr - name: alpn_test build: test language: c @@ -1510,6 +1490,26 @@ targets: - grpc - gpr_test_util - gpr +- name: timer_heap_test + build: test + language: c + src: + - test/core/iomgr/timer_heap_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr +- name: timer_list_test + build: test + language: c + src: + - test/core/iomgr/timer_list_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr - name: timers_test build: test language: c diff --git a/gRPC.podspec b/gRPC.podspec index 66b49a83fe0..2c566f71843 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -185,9 +185,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/parser.h', - 'src/core/iomgr/alarm.h', - 'src/core/iomgr/alarm_heap.h', - 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/closure.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', @@ -215,6 +212,9 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/timer.h', + 'src/core/iomgr/timer_heap.h', + 'src/core/iomgr/timer_internal.h', 'src/core/iomgr/udp_server.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', @@ -327,8 +327,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.c', 'src/core/httpcli/httpcli.c', 'src/core/httpcli/parser.c', - 'src/core/iomgr/alarm.c', - 'src/core/iomgr/alarm_heap.c', 'src/core/iomgr/closure.c', 'src/core/iomgr/endpoint.c', 'src/core/iomgr/endpoint_pair_posix.c', @@ -359,6 +357,8 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server_windows.c', 'src/core/iomgr/tcp_windows.c', 'src/core/iomgr/time_averaged_stats.c', + 'src/core/iomgr/timer.c', + 'src/core/iomgr/timer_heap.c', 'src/core/iomgr/udp_server.c', 'src/core/iomgr/wakeup_fd_eventfd.c', 'src/core/iomgr/wakeup_fd_nospecial.c', @@ -475,9 +475,6 @@ Pod::Spec.new do |s| 'src/core/httpcli/format_request.h', 'src/core/httpcli/httpcli.h', 'src/core/httpcli/parser.h', - 'src/core/iomgr/alarm.h', - 'src/core/iomgr/alarm_heap.h', - 'src/core/iomgr/alarm_internal.h', 'src/core/iomgr/closure.h', 'src/core/iomgr/endpoint.h', 'src/core/iomgr/endpoint_pair.h', @@ -505,6 +502,9 @@ Pod::Spec.new do |s| 'src/core/iomgr/tcp_server.h', 'src/core/iomgr/tcp_windows.h', 'src/core/iomgr/time_averaged_stats.h', + 'src/core/iomgr/timer.h', + 'src/core/iomgr/timer_heap.h', + 'src/core/iomgr/timer_internal.h', 'src/core/iomgr/udp_server.h', 'src/core/iomgr/wakeup_fd_pipe.h', 'src/core/iomgr/wakeup_fd_posix.h', diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index d3be97ecbc6..51a11a7e0a4 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -812,9 +812,6 @@ src/core/debug/trace.h \ src/core/httpcli/format_request.h \ src/core/httpcli/httpcli.h \ src/core/httpcli/parser.h \ -src/core/iomgr/alarm.h \ -src/core/iomgr/alarm_heap.h \ -src/core/iomgr/alarm_internal.h \ src/core/iomgr/closure.h \ src/core/iomgr/endpoint.h \ src/core/iomgr/endpoint_pair.h \ @@ -842,6 +839,9 @@ src/core/iomgr/tcp_posix.h \ src/core/iomgr/tcp_server.h \ src/core/iomgr/tcp_windows.h \ src/core/iomgr/time_averaged_stats.h \ +src/core/iomgr/timer.h \ +src/core/iomgr/timer_heap.h \ +src/core/iomgr/timer_internal.h \ src/core/iomgr/udp_server.h \ src/core/iomgr/wakeup_fd_pipe.h \ src/core/iomgr/wakeup_fd_posix.h \ @@ -947,8 +947,6 @@ src/core/debug/trace.c \ src/core/httpcli/format_request.c \ src/core/httpcli/httpcli.c \ src/core/httpcli/parser.c \ -src/core/iomgr/alarm.c \ -src/core/iomgr/alarm_heap.c \ src/core/iomgr/closure.c \ src/core/iomgr/endpoint.c \ src/core/iomgr/endpoint_pair_posix.c \ @@ -979,6 +977,8 @@ src/core/iomgr/tcp_server_posix.c \ src/core/iomgr/tcp_server_windows.c \ src/core/iomgr/tcp_windows.c \ src/core/iomgr/time_averaged_stats.c \ +src/core/iomgr/timer.c \ +src/core/iomgr/timer_heap.c \ src/core/iomgr/udp_server.c \ src/core/iomgr/wakeup_fd_eventfd.c \ src/core/iomgr/wakeup_fd_nospecial.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 32c490376d9..b4e190d96d8 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1,34 +1,6 @@ [ - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "language": "c", - "name": "alarm_heap_test", - "src": [ - "test/core/iomgr/alarm_heap_test.c" - ] - }, - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "language": "c", - "name": "alarm_list_test", - "src": [ - "test/core/iomgr/alarm_list_test.c" - ] - }, { "deps": [ "gpr", @@ -968,6 +940,34 @@ "test/core/transport/chttp2/timeout_encoding_test.c" ] }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "timer_heap_test", + "src": [ + "test/core/iomgr/timer_heap_test.c" + ] + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "timer_list_test", + "src": [ + "test/core/iomgr/timer_list_test.c" + ] + }, { "deps": [ "gpr", @@ -12315,9 +12315,6 @@ "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -12345,6 +12342,9 @@ "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -12490,11 +12490,6 @@ "src/core/httpcli/httpcli_security_connector.c", "src/core/httpcli/parser.c", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.c", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.c", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.c", @@ -12552,6 +12547,11 @@ "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.c", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.c", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.c", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_eventfd.c", @@ -12818,9 +12818,6 @@ "src/core/httpcli/format_request.h", "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.h", "src/core/iomgr/endpoint_pair.h", @@ -12848,6 +12845,9 @@ "src/core/iomgr/tcp_server.h", "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_pipe.h", "src/core/iomgr/wakeup_fd_posix.h", @@ -12978,11 +12978,6 @@ "src/core/httpcli/httpcli.h", "src/core/httpcli/parser.c", "src/core/httpcli/parser.h", - "src/core/iomgr/alarm.c", - "src/core/iomgr/alarm.h", - "src/core/iomgr/alarm_heap.c", - "src/core/iomgr/alarm_heap.h", - "src/core/iomgr/alarm_internal.h", "src/core/iomgr/closure.c", "src/core/iomgr/closure.h", "src/core/iomgr/endpoint.c", @@ -13040,6 +13035,11 @@ "src/core/iomgr/tcp_windows.h", "src/core/iomgr/time_averaged_stats.c", "src/core/iomgr/time_averaged_stats.h", + "src/core/iomgr/timer.c", + "src/core/iomgr/timer.h", + "src/core/iomgr/timer_heap.c", + "src/core/iomgr/timer_heap.h", + "src/core/iomgr/timer_internal.h", "src/core/iomgr/udp_server.c", "src/core/iomgr/udp_server.h", "src/core/iomgr/wakeup_fd_eventfd.c", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 7989f5c100f..7142575966b 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1,42 +1,6 @@ [ - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c", - "name": "alarm_heap_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, - { - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" - ], - "exclude_configs": [], - "flaky": false, - "language": "c", - "name": "alarm_list_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] - }, { "ci_platforms": [ "linux", @@ -1097,6 +1061,42 @@ "windows" ] }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "timer_heap_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "timer_list_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, { "ci_platforms": [ "linux", diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln index 24b51d460d6..141fe8a16d5 100644 --- a/vsprojects/buildtests_c.sln +++ b/vsprojects/buildtests_c.sln @@ -575,28 +575,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bad_client_test", "vcxproj\ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alarm_heap_test", "vcxproj\test\alarm_heap_test\alarm_heap_test.vcxproj", "{B1746F03-DFBD-83E6-9886-2BB0F9D70B57}" - ProjectSection(myProperties) = preProject - lib = "False" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alarm_list_test", "vcxproj\test\alarm_list_test\alarm_list_test.vcxproj", "{E6F27D86-476F-CB60-AC56-ED3A210C0E96}" - ProjectSection(myProperties) = preProject - lib = "False" - EndProjectSection - ProjectSection(ProjectDependencies) = postProject - {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} - {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} - {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} - {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alpn_test", "vcxproj\test\alpn_test\alpn_test.vcxproj", "{5BAAE7EA-A972-DD80-F190-29B9E3110BB3}" ProjectSection(myProperties) = preProject lib = "False" @@ -1204,6 +1182,28 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timeout_encoding_test", "vc {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer_heap_test", "vcxproj\test\timer_heap_test\timer_heap_test.vcxproj", "{A2110C60-E75A-F76E-205E-1836F86C4D53}" + ProjectSection(myProperties) = preProject + lib = "False" + EndProjectSection + ProjectSection(ProjectDependencies) = postProject + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer_list_test", "vcxproj\test\timer_list_test\timer_list_test.vcxproj", "{C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}" + ProjectSection(myProperties) = preProject + lib = "False" + EndProjectSection + ProjectSection(ProjectDependencies) = postProject + {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} + {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9} + {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037} + {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} + EndProjectSection +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timers_test", "vcxproj\test\timers_test\timers_test.vcxproj", "{FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}" ProjectSection(myProperties) = preProject lib = "False" @@ -8765,38 +8765,6 @@ Global {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|Win32.Build.0 = Release|Win32 {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|x64.ActiveCfg = Release|x64 {BA67B418-B699-E41A-9CC4-0279C49481A5}.Release-DLL|x64.Build.0 = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|Win32.ActiveCfg = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|x64.ActiveCfg = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|Win32.ActiveCfg = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|x64.ActiveCfg = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|Win32.Build.0 = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug|x64.Build.0 = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|Win32.Build.0 = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release|x64.Build.0 = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|Win32.Build.0 = Debug|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|x64.ActiveCfg = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Debug-DLL|x64.Build.0 = Debug|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|Win32.ActiveCfg = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|Win32.Build.0 = Release|Win32 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|x64.ActiveCfg = Release|x64 - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57}.Release-DLL|x64.Build.0 = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|Win32.ActiveCfg = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|x64.ActiveCfg = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|Win32.ActiveCfg = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|x64.ActiveCfg = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|Win32.Build.0 = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug|x64.Build.0 = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|Win32.Build.0 = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release|x64.Build.0 = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|Win32.Build.0 = Debug|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|x64.ActiveCfg = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Debug-DLL|x64.Build.0 = Debug|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|Win32.ActiveCfg = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|Win32.Build.0 = Release|Win32 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|x64.ActiveCfg = Release|x64 - {E6F27D86-476F-CB60-AC56-ED3A210C0E96}.Release-DLL|x64.Build.0 = Release|x64 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Debug|Win32.ActiveCfg = Debug|Win32 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Debug|x64.ActiveCfg = Debug|x64 {5BAAE7EA-A972-DD80-F190-29B9E3110BB3}.Release|Win32.ActiveCfg = Release|Win32 @@ -9741,6 +9709,38 @@ Global {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|Win32.Build.0 = Release|Win32 {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|x64.ActiveCfg = Release|x64 {EA073C36-A527-F749-AD4A-243A38B9BFF5}.Release-DLL|x64.Build.0 = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|x64.ActiveCfg = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|Win32.ActiveCfg = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|x64.ActiveCfg = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|Win32.Build.0 = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug|x64.Build.0 = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|Win32.Build.0 = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release|x64.Build.0 = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|Win32.Build.0 = Debug|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|x64.ActiveCfg = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Debug-DLL|x64.Build.0 = Debug|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|Win32.ActiveCfg = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|Win32.Build.0 = Release|Win32 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|x64.ActiveCfg = Release|x64 + {A2110C60-E75A-F76E-205E-1836F86C4D53}.Release-DLL|x64.Build.0 = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|Win32.ActiveCfg = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|x64.ActiveCfg = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|Win32.ActiveCfg = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|x64.ActiveCfg = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|Win32.Build.0 = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug|x64.Build.0 = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|Win32.Build.0 = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release|x64.Build.0 = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|Win32.ActiveCfg = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|Win32.Build.0 = Debug|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|x64.ActiveCfg = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Debug-DLL|x64.Build.0 = Debug|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|Win32.ActiveCfg = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|Win32.Build.0 = Release|Win32 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|x64.ActiveCfg = Release|x64 + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB}.Release-DLL|x64.Build.0 = Release|x64 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Debug|Win32.ActiveCfg = Debug|Win32 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Debug|x64.ActiveCfg = Debug|x64 {FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj index 23bcd0c4430..8d7e2012ff2 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj @@ -298,9 +298,6 @@ - - - @@ -328,6 +325,9 @@ + + + @@ -489,10 +489,6 @@ - - - - @@ -553,6 +549,10 @@ + + + + diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters index 1cfccf0e197..315af27b288 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters @@ -163,12 +163,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -259,6 +253,12 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr @@ -599,15 +599,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -689,6 +680,15 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj index e308a03fdaa..08d18f4798f 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj @@ -277,9 +277,6 @@ - - - @@ -307,6 +304,9 @@ + + + @@ -428,10 +428,6 @@ - - - - @@ -492,6 +488,10 @@ + + + + diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters index 370d1f6fb2f..daec33d2330 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -103,12 +103,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -199,6 +193,12 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr @@ -497,15 +497,6 @@ src\core\httpcli - - src\core\iomgr - - - src\core\iomgr - - - src\core\iomgr - src\core\iomgr @@ -587,6 +578,15 @@ src\core\iomgr + + src\core\iomgr + + + src\core\iomgr + + + src\core\iomgr + src\core\iomgr diff --git a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj similarity index 98% rename from vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj rename to vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj index f3c0cfd3c2c..8b84a528a01 100644 --- a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj +++ b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj @@ -20,7 +20,7 @@ - {B1746F03-DFBD-83E6-9886-2BB0F9D70B57} + {A2110C60-E75A-F76E-205E-1836F86C4D53} @@ -55,13 +55,13 @@ - alarm_heap_test + timer_heap_test static Debug Debug - alarm_heap_test + timer_heap_test static Debug Debug @@ -143,7 +143,7 @@ - + diff --git a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters similarity index 64% rename from vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters rename to vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters index 74604fa7443..6a22addffa3 100644 --- a/vsprojects/vcxproj/test/alarm_heap_test/alarm_heap_test.vcxproj.filters +++ b/vsprojects/vcxproj/test/timer_heap_test/timer_heap_test.vcxproj.filters @@ -1,20 +1,20 @@ - + test\core\iomgr - {39c80086-e80b-b26f-6db8-7057b2bd93b3} + {c7789d63-cb31-a5ba-a830-4a6223e5561c} - {c551e414-1de0-a7c1-a69b-3ba69c55e5d4} + {320a9cb8-0041-acb0-79d5-6cff8f1fdeba} - {1330dfd2-f26b-7973-17c9-97c8809e9b74} + {df867a7c-861e-6482-a5b2-35a8ca345a6a} diff --git a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj similarity index 98% rename from vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj rename to vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj index cce21d4c719..4f00b62803a 100644 --- a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj +++ b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj @@ -20,7 +20,7 @@ - {E6F27D86-476F-CB60-AC56-ED3A210C0E96} + {C43EA45B-1E72-C58D-8CE3-A879D1B1E2DB} @@ -55,13 +55,13 @@ - alarm_list_test + timer_list_test static Debug Debug - alarm_list_test + timer_list_test static Debug Debug @@ -143,7 +143,7 @@ - + diff --git a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters similarity index 64% rename from vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters rename to vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters index cc4cbf7c838..8973e5a9bd5 100644 --- a/vsprojects/vcxproj/test/alarm_list_test/alarm_list_test.vcxproj.filters +++ b/vsprojects/vcxproj/test/timer_list_test/timer_list_test.vcxproj.filters @@ -1,20 +1,20 @@ - + test\core\iomgr - {5599c85d-915e-7ef2-1b2c-061b82987e1d} + {ce536631-1d52-1c3c-8eed-efe2f4bae6ed} - {46744e86-73cb-67b0-cddb-72655b2ded40} + {b877a050-4172-3910-dede-77628e0ef150} - {26291b48-8dd4-079f-bbfa-a07190367bd7} + {087dd179-d26d-8e56-707b-6059afbfd70a} From e5f41cb5da0888a9d29f76116aa2ddde88cdded2 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Wed, 14 Oct 2015 13:40:59 -0700 Subject: [PATCH 084/111] php: fix empty_stream interop test; --- src/php/tests/interop/interop_client.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php index 0590264ef80..1f903053a7d 100755 --- a/src/php/tests/interop/interop_client.php +++ b/src/php/tests/interop/interop_client.php @@ -256,15 +256,11 @@ function pingPong($stub) { * @param $stub Stub object that has service methods. */ function emptyStream($stub) { - // for the current PHP implementation, $call->read() will wait - // forever for a server response if the server is not sending any. - // so this test is imeplemented as a timeout to indicate the absence - // of receiving any response from the server - $call = $stub->FullDuplexCall(array('timeout' => 100000)); + $call = $stub->FullDuplexCall(); $call->writesDone(); hardAssert($call->read() === null, 'Server returned too many responses'); hardAssert($call->getStatus()->code === Grpc\STATUS_OK, - 'Call did not complete successfully'); + 'Call did not complete successfully'); } /** From 59e339b9d243a2962f37e4080ae2110d32989fd4 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 15:24:45 -0700 Subject: [PATCH 085/111] Made ruby server stop waiting for calls when it starts getting null calls --- src/ruby/lib/grpc/generic/rpc_server.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb index 3740ac52da2..8dfc9b67637 100644 --- a/src/ruby/lib/grpc/generic/rpc_server.rb +++ b/src/ruby/lib/grpc/generic/rpc_server.rb @@ -417,7 +417,12 @@ module GRPC begin an_rpc = @server.request_call(@cq, loop_tag, INFINITE_FUTURE) c = new_active_server_call(an_rpc) - unless c.nil? + if c.nil? + # With infinite timeout on request_call, a nil call implies that the + # server has shut down. Waiting for another call at that point will + # not accomplish anything. + break + else mth = an_rpc.method.to_sym @pool.schedule(c) do |call| rpc_descs[mth].run_server_method(call, rpc_handlers[mth]) From 8b846849c8e00dc5fa94a890b249eae548c2be18 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Wed, 14 Oct 2015 16:56:56 -0700 Subject: [PATCH 086/111] enable cloud to prod auth tests --- tools/jenkins/run_interop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh index 14e075691cd..b1cf7b57485 100755 --- a/tools/jenkins/run_interop.sh +++ b/tools/jenkins/run_interop.sh @@ -34,4 +34,4 @@ set -ex # Enter the gRPC repo root cd $(dirname $0)/../.. -tools/run_tests/run_interop_tests.py -l all -s all --cloud_to_prod --use_docker -t -j 8 $@ || true +tools/run_tests/run_interop_tests.py -l all -s all --cloud_to_prod --cloud_to_prod_auth --use_docker -t -j 8 $@ || true From 13bf36a314120229f119c66bb33ddf5cfc83ee62 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Wed, 14 Oct 2015 17:01:00 -0700 Subject: [PATCH 087/111] enable timeout on sleeping server interop test --- tools/run_tests/run_interop_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 33ebcbcc41f..1814ba1abc3 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -308,10 +308,10 @@ _LANGUAGES = { # languages supported as cloud_to_cloud servers _SERVERS = ['c++', 'node', 'csharp', 'java', 'go', 'ruby', 'python'] -# TODO(jtattermusch): add timeout_on_sleeping_server once java starts supporting it. _TEST_CASES = ['large_unary', 'empty_unary', 'ping_pong', 'empty_stream', 'client_streaming', 'server_streaming', - 'cancel_after_begin', 'cancel_after_first_response'] + 'cancel_after_begin', 'cancel_after_first_response', + 'timeout_on_sleeping_server'] _AUTH_TEST_CASES = ['compute_engine_creds', 'jwt_token_creds', 'oauth2_auth_token', 'per_rpc_creds'] From 3c09a643326353ac403f0ec25ae4a795f57ceda9 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 17:25:49 -0700 Subject: [PATCH 088/111] Fixed previous change, altered RuboCop settings to let me do so --- src/ruby/.rubocop.yml | 6 ++++++ src/ruby/lib/grpc/generic/rpc_server.rb | 9 +++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml index 312bdca384e..d740b79ffda 100644 --- a/src/ruby/.rubocop.yml +++ b/src/ruby/.rubocop.yml @@ -9,3 +9,9 @@ AllCops: - 'bin/math_services.rb' - 'pb/grpc/health/v1alpha/*' - 'pb/test/**/*' + +Metrics/CyclomaticComplexity: + Max: 8 + +Metrics/PerceivedComplexity: + Max: 8 \ No newline at end of file diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb index 8dfc9b67637..228c500672b 100644 --- a/src/ruby/lib/grpc/generic/rpc_server.rb +++ b/src/ruby/lib/grpc/generic/rpc_server.rb @@ -416,13 +416,10 @@ module GRPC until stopped? begin an_rpc = @server.request_call(@cq, loop_tag, INFINITE_FUTURE) + break if (!an_rpc.nil?) && an_rpc.call.nil? + c = new_active_server_call(an_rpc) - if c.nil? - # With infinite timeout on request_call, a nil call implies that the - # server has shut down. Waiting for another call at that point will - # not accomplish anything. - break - else + unless c.nil? mth = an_rpc.method.to_sym @pool.schedule(c) do |call| rpc_descs[mth].run_server_method(call, rpc_handlers[mth]) From aad1a34b4fd152c32c907641f3f9bb8f3fb54d54 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 14 Oct 2015 17:56:02 -0700 Subject: [PATCH 089/111] Add newline to .rubocop.yml --- src/ruby/.rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml index d740b79ffda..dd57ab60828 100644 --- a/src/ruby/.rubocop.yml +++ b/src/ruby/.rubocop.yml @@ -14,4 +14,4 @@ Metrics/CyclomaticComplexity: Max: 8 Metrics/PerceivedComplexity: - Max: 8 \ No newline at end of file + Max: 8 From 6d6009fec52947376d5d584f7f60a72dde723159 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 15 Oct 2015 09:57:31 -0700 Subject: [PATCH 090/111] Distribute roots.pem with the Node package --- package.json | 1 + src/node/index.js | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/package.json b/package.json index c624c45107e..54efb69b042 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "src/core", "test/proto", "include", + "etc", "binding.gyp" ], "main": "src/node/index.js", diff --git a/src/node/index.js b/src/node/index.js index 591d9dd9155..0d1a7fd887b 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -33,6 +33,14 @@ 'use strict'; +var path = require('path'); + +var SSL_ROOTS_PATH = path.resolve(__dirname, '..', '..', 'etc', 'roots.pem'); + +if (!process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH) { + process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = SSL_ROOTS_PATH; +} + var _ = require('lodash'); var ProtoBuf = require('protobufjs'); From ba0cb56b32921f16e082d0dff072720b68743304 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Thu, 15 Oct 2015 11:00:50 -0700 Subject: [PATCH 091/111] php: add use_tls and use_test_ca param to interop tests script --- src/php/tests/interop/interop_client.php | 79 +++++++++++++++--------- 1 file changed, 51 insertions(+), 28 deletions(-) diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php index 1f903053a7d..3233a816ea9 100755 --- a/src/php/tests/interop/interop_client.php +++ b/src/php/tests/interop/interop_client.php @@ -36,6 +36,8 @@ require 'empty.php'; require 'message_set.php'; require 'messages.php'; require 'test.php'; +use Google\Auth\CredentialsLoader; +use Google\Auth\ApplicationDefaultCredentials; /** * Assertion function that always exits with an error code if the assertion is @@ -114,7 +116,7 @@ function serviceAccountCreds($stub, $args) { throw new Exception('Missing oauth scope'); } $jsonKey = json_decode( - file_get_contents(getenv(Google\Auth\CredentialsLoader::ENV_VAR)), + file_get_contents(getenv(CredentialsLoader::ENV_VAR)), true); $result = performLargeUnary($stub, $fillUsername=true, $fillOauthScope=true); hardAssert($result->getUsername() == $jsonKey['client_email'], @@ -149,7 +151,7 @@ function computeEngineCreds($stub, $args) { */ function jwtTokenCreds($stub, $args) { $jsonKey = json_decode( - file_get_contents(getenv(Google\Auth\CredentialsLoader::ENV_VAR)), + file_get_contents(getenv(CredentialsLoader::ENV_VAR)), true); $result = performLargeUnary($stub, $fillUsername=true, $fillOauthScope=true); hardAssert($result->getUsername() == $jsonKey['client_email'], @@ -319,12 +321,17 @@ function timeoutOnSleepingServer($stub) { } $args = getopt('', array('server_host:', 'server_port:', 'test_case:', + 'use_tls::', 'use_test_ca::', 'server_host_override:', 'oauth_scope:', 'default_service_account:')); -if (!array_key_exists('server_host', $args) || - !array_key_exists('server_port', $args) || - !array_key_exists('test_case', $args)) { - throw new Exception('Missing argument'); +if (!array_key_exists('server_host', $args)) { + throw new Exception('Missing argument: --server_host is required'); +} +if (!array_key_exists('server_port', $args)) { + throw new Exception('Missing argument: --server_port is required'); +} +if (!array_key_exists('test_case', $args)) { + throw new Exception('Missing argument: --test_case is required'); } if ($args['server_port'] == 443) { @@ -333,41 +340,57 @@ if ($args['server_port'] == 443) { $server_address = $args['server_host'] . ':' . $args['server_port']; } -if (!array_key_exists('server_host_override', $args)) { - $args['server_host_override'] = 'foo.test.google.fr'; +$test_case = $args['test_case']; + +$host_override = 'foo.test.google.fr'; +if (array_key_exists('server_host_override', $args)) { + $host_override = $args['server_host_override']; +} + +$use_tls = false; +if (array_key_exists('use_tls', $args) && + $args['use_tls'] != 'false') { + $use_tls = true; } -$ssl_cert_file = getenv('SSL_CERT_FILE'); -if (!$ssl_cert_file) { - $ssl_cert_file = dirname(__FILE__) . '/../data/ca.pem'; +$use_test_ca = false; +if (array_key_exists('use_test_ca', $args) && + $args['use_test_ca'] != 'false') { + $use_test_ca = true; } -$credentials = Grpc\Credentials::createSsl(file_get_contents($ssl_cert_file)); +$opts = []; -$opts = [ - 'grpc.ssl_target_name_override' => $args['server_host_override'], - 'credentials' => $credentials, - ]; +if ($use_tls) { + if ($use_test_ca) { + $ssl_cert_file = dirname(__FILE__) . '/../data/ca.pem'; + } else { + $ssl_cert_file = getenv('SSL_CERT_FILE'); + } + $ssl_credentials = Grpc\Credentials::createSsl( + file_get_contents($ssl_cert_file)); + $opts['credentials'] = $ssl_credentials; + $opts['grpc.ssl_target_name_override'] = $host_override; +} -if (in_array($args['test_case'], array( - 'service_account_creds', - 'compute_engine_creds', - 'jwt_token_creds'))) { - if ($args['test_case'] == 'jwt_token_creds') { - $auth = Google\Auth\ApplicationDefaultCredentials::getCredentials(); +if (in_array($test_case, array('service_account_creds', + 'compute_engine_creds', 'jwt_token_creds'))) { + if ($test_case == 'jwt_token_creds') { + $auth_credentials = ApplicationDefaultCredentials::getCredentials(); } else { - $auth = Google\Auth\ApplicationDefaultCredentials::getCredentials( - $args['oauth_scope']); + $auth_credentials = ApplicationDefaultCredentials::getCredentials( + $args['oauth_scope'] + ); } - $opts['update_metadata'] = $auth->getUpdateMetadataFunc(); + $opts['update_metadata'] = $auth_credentials->getUpdateMetadataFunc(); } $stub = new grpc\testing\TestServiceClient($server_address, $opts); echo "Connecting to $server_address\n"; -echo "Running test case $args[test_case]\n"; +echo "Running test case $test_case\n"; -switch ($args['test_case']) { +switch ($test_case) { case 'empty_unary': emptyUnary($stub); break; @@ -405,6 +428,6 @@ switch ($args['test_case']) { jwtTokenCreds($stub, $args); break; default: - echo "Unsupported test case $args[test_case]\n"; + echo "Unsupported test case $test_case\n"; exit(1); } From d6d73ca25cc83e844555d470cb373b9d3cb56549 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 15 Oct 2015 11:37:56 -0700 Subject: [PATCH 092/111] Make Node coverage reporting only report on actual Node source files --- tools/run_tests/run_node.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/run_node.sh b/tools/run_tests/run_node.sh index 85e3a38f844..d0a74e7e1ef 100755 --- a/tools/run_tests/run_node.sh +++ b/tools/run_tests/run_node.sh @@ -40,13 +40,14 @@ root=`pwd` if [ "$CONFIG" = "gcov" ] then ./node_modules/.bin/istanbul cover --dir reports/node_coverage \ - ./node_modules/.bin/_mocha -- --timeout 8000 src/node/test + -x **/interop/* ./node_modules/.bin/_mocha -- --timeout 8000 src/node/test cd build gcov Release/obj.target/grpc/ext/*.o lcov --base-directory . --directory . -c -o coverage.info + lcov -e coverage.info '**/src/node/ext/*' -o coverage.info genhtml -o ../reports/node_ext_coverage --num-spaces 2 \ -t 'Node gRPC test coverage' coverage.info --rc genhtml_hi_limit=95 \ - --rc genhtml_med_limit=80 + --rc genhtml_med_limit=80 --no-prefix echo '' > \ ../reports/node_coverage/index.html else From b87663b31a2b3ba10ae797dcef279ce62b60f4a6 Mon Sep 17 00:00:00 2001 From: Stanley Cheung Date: Thu, 15 Oct 2015 12:50:17 -0700 Subject: [PATCH 093/111] php: add use_tls=true flag to run_interop_tests script --- tools/run_tests/run_interop_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 1814ba1abc3..c9e2f09b2d2 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -220,11 +220,11 @@ class PHPLanguage: def cloud_to_prod_args(self): return (self.client_cmdline_base + _CLOUD_TO_PROD_BASE_ARGS + - ['--use_tls']) + ['--use_tls=true']) def cloud_to_cloud_args(self): return (self.client_cmdline_base + _CLOUD_TO_CLOUD_BASE_ARGS + - ['--use_tls', '--use_test_ca']) + ['--use_tls=true', '--use_test_ca=true']) def cloud_to_prod_env(self): return _SSL_CERT_ENV From cfbdca05f64e49e33dc4dc4b4e8859a981845081 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Thu, 15 Oct 2015 13:34:09 -0700 Subject: [PATCH 094/111] C# ref docs should not be in master branch --- doc/ref/csharp/.gitignore | 1 - doc/ref/csharp/html/SearchHelp.aspx | 233 ---- doc/ref/csharp/html/SearchHelp.inc.php | 173 --- doc/ref/csharp/html/SearchHelp.php | 58 - doc/ref/csharp/html/Web.Config | 31 - doc/ref/csharp/html/WebKI.xml | 1005 ----------------- doc/ref/csharp/html/WebTOC.xml | 523 --------- doc/ref/csharp/html/fti/FTI_100.json | 1 - doc/ref/csharp/html/fti/FTI_101.json | 1 - doc/ref/csharp/html/fti/FTI_102.json | 1 - doc/ref/csharp/html/fti/FTI_103.json | 1 - doc/ref/csharp/html/fti/FTI_104.json | 1 - doc/ref/csharp/html/fti/FTI_105.json | 1 - doc/ref/csharp/html/fti/FTI_107.json | 1 - doc/ref/csharp/html/fti/FTI_108.json | 1 - doc/ref/csharp/html/fti/FTI_109.json | 1 - doc/ref/csharp/html/fti/FTI_110.json | 1 - doc/ref/csharp/html/fti/FTI_111.json | 1 - doc/ref/csharp/html/fti/FTI_112.json | 1 - doc/ref/csharp/html/fti/FTI_113.json | 1 - doc/ref/csharp/html/fti/FTI_114.json | 1 - doc/ref/csharp/html/fti/FTI_115.json | 1 - doc/ref/csharp/html/fti/FTI_116.json | 1 - doc/ref/csharp/html/fti/FTI_117.json | 1 - doc/ref/csharp/html/fti/FTI_118.json | 1 - doc/ref/csharp/html/fti/FTI_119.json | 1 - doc/ref/csharp/html/fti/FTI_122.json | 1 - doc/ref/csharp/html/fti/FTI_97.json | 1 - doc/ref/csharp/html/fti/FTI_98.json | 1 - doc/ref/csharp/html/fti/FTI_99.json | 1 - doc/ref/csharp/html/fti/FTI_Files.json | 1 - .../html/Events_T_Grpc_Core_RpcException.htm | 3 - .../F_Grpc_Core_ChannelOptions_Census.htm | 2 - ...c_Core_ChannelOptions_DefaultAuthority.htm | 2 - ...nnelOptions_Http2InitialSequenceNumber.htm | 2 - ...re_ChannelOptions_MaxConcurrentStreams.htm | 2 - ...c_Core_ChannelOptions_MaxMessageLength.htm | 2 - ..._ChannelOptions_PrimaryUserAgentString.htm | 2 - ...hannelOptions_SecondaryUserAgentString.htm | 2 - ...e_ChannelOptions_SslTargetNameOverride.htm | 2 - ...Core_ContextPropagationOptions_Default.htm | 4 - ..._Grpc_Core_Metadata_BinaryHeaderSuffix.htm | 4 - .../html/html/F_Grpc_Core_Metadata_Empty.htm | 4 - .../F_Grpc_Core_ServerPort_PickUnused.htm | 5 - .../F_Grpc_Core_Status_DefaultCancelled.htm | 4 - .../F_Grpc_Core_Status_DefaultSuccess.htm | 4 - ...F_Grpc_Core_VersionInfo_CurrentVersion.htm | 4 - .../html/F_Grpc_Core_WriteOptions_Default.htm | 4 - .../Fields_T_Grpc_Core_ChannelOptions.htm | 3 - ..._T_Grpc_Core_ContextPropagationOptions.htm | 5 - .../html/html/Fields_T_Grpc_Core_Metadata.htm | 7 - .../html/Fields_T_Grpc_Core_ServerPort.htm | 6 - .../html/html/Fields_T_Grpc_Core_Status.htm | 7 - .../html/Fields_T_Grpc_Core_VersionInfo.htm | 5 - .../html/Fields_T_Grpc_Core_WriteOptions.htm | 5 - ..._Auth_AuthInterceptors_FromAccessToken.htm | 12 - ...c_Auth_AuthInterceptors_FromCredential.htm | 13 - ...ore_AsyncClientStreamingCall_2_Dispose.htm | 8 - ..._AsyncClientStreamingCall_2_GetAwaiter.htm | 5 - ...e_AsyncClientStreamingCall_2_GetStatus.htm | 6 - ...AsyncClientStreamingCall_2_GetTrailers.htm | 6 - ...ore_AsyncDuplexStreamingCall_2_Dispose.htm | 8 - ...e_AsyncDuplexStreamingCall_2_GetStatus.htm | 6 - ...AsyncDuplexStreamingCall_2_GetTrailers.htm | 6 - ...ore_AsyncServerStreamingCall_1_Dispose.htm | 8 - ...e_AsyncServerStreamingCall_1_GetStatus.htm | 6 - ...AsyncServerStreamingCall_1_GetTrailers.htm | 6 - .../M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm | 8 - ..._Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm | 5 - ...M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm | 6 - ...Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm | 6 - ...re_CallInvocationDetails_2_WithOptions.htm | 13 - ...rpc_Core_CallInvocationDetails_2__ctor.htm | 19 - ...c_Core_CallInvocationDetails_2__ctor_1.htm | 23 - ...c_Core_CallInvocationDetails_2__ctor_2.htm | 31 - ...Core_CallOptions_WithCancellationToken.htm | 13 - .../M_Grpc_Core_CallOptions_WithDeadline.htm | 13 - .../M_Grpc_Core_CallOptions_WithHeaders.htm | 13 - .../html/M_Grpc_Core_CallOptions__ctor.htm | 35 - ...Core_Calls_AsyncClientStreamingCall__2.htm | 19 - ...Core_Calls_AsyncDuplexStreamingCall__2.htm | 20 - ...Core_Calls_AsyncServerStreamingCall__2.htm | 23 - .../M_Grpc_Core_Calls_AsyncUnaryCall__2.htm | 22 - ...M_Grpc_Core_Calls_BlockingUnaryCall__2.htm | 22 - .../html/M_Grpc_Core_ChannelOption__ctor.htm | 15 - .../M_Grpc_Core_ChannelOption__ctor_1.htm | 15 - .../html/M_Grpc_Core_Channel_ConnectAsync.htm | 20 - .../M_Grpc_Core_Channel_ShutdownAsync.htm | 6 - ..._Core_Channel_WaitForStateChangedAsync.htm | 22 - .../html/html/M_Grpc_Core_Channel__ctor.htm | 24 - .../html/html/M_Grpc_Core_Channel__ctor_1.htm | 27 - .../M_Grpc_Core_ClientBase_CreateCall__2.htm | 22 - .../html/M_Grpc_Core_ClientBase__ctor.htm | 11 - ...c_Core_ContextPropagationOptions__ctor.htm | 20 - .../html/M_Grpc_Core_Credentials__ctor.htm | 2 - .../M_Grpc_Core_GrpcEnvironment_SetLogger.htm | 12 - ...c_Core_IAsyncStreamWriter_1_WriteAsync.htm | 11 - ...re_IClientStreamWriter_1_CompleteAsync.htm | 4 - .../M_Grpc_Core_KeyCertificatePair__ctor.htm | 15 - ..._Grpc_Core_Logging_ConsoleLogger_Debug.htm | 16 - ..._Grpc_Core_Logging_ConsoleLogger_Error.htm | 21 - ...rpc_Core_Logging_ConsoleLogger_Error_1.htm | 16 - ..._Core_Logging_ConsoleLogger_ForType__1.htm | 7 - ...M_Grpc_Core_Logging_ConsoleLogger_Info.htm | 16 - ...rpc_Core_Logging_ConsoleLogger_Warning.htm | 21 - ...c_Core_Logging_ConsoleLogger_Warning_1.htm | 16 - ..._Grpc_Core_Logging_ConsoleLogger__ctor.htm | 2 - .../M_Grpc_Core_Logging_ILogger_Debug.htm | 13 - .../M_Grpc_Core_Logging_ILogger_Error.htm | 17 - .../M_Grpc_Core_Logging_ILogger_Error_1.htm | 13 - ...M_Grpc_Core_Logging_ILogger_ForType__1.htm | 4 - .../html/M_Grpc_Core_Logging_ILogger_Info.htm | 13 - .../M_Grpc_Core_Logging_ILogger_Warning.htm | 17 - .../M_Grpc_Core_Logging_ILogger_Warning_1.htm | 13 - .../html/M_Grpc_Core_Marshaller_1__ctor.htm | 15 - .../M_Grpc_Core_Marshallers_Create__1.htm | 18 - .../html/html/M_Grpc_Core_Metadata_Add.htm | 11 - .../html/html/M_Grpc_Core_Metadata_Add_1.htm | 14 - .../html/html/M_Grpc_Core_Metadata_Add_2.htm | 14 - .../html/html/M_Grpc_Core_Metadata_Clear.htm | 3 - .../html/M_Grpc_Core_Metadata_Contains.htm | 11 - .../html/html/M_Grpc_Core_Metadata_CopyTo.htm | 16 - .../M_Grpc_Core_Metadata_Entry_ToString.htm | 5 - .../html/M_Grpc_Core_Metadata_Entry__ctor.htm | 15 - .../M_Grpc_Core_Metadata_Entry__ctor_1.htm | 15 - .../M_Grpc_Core_Metadata_GetEnumerator.htm | 3 - .../html/M_Grpc_Core_Metadata_IndexOf.htm | 11 - .../html/html/M_Grpc_Core_Metadata_Insert.htm | 16 - .../html/html/M_Grpc_Core_Metadata_Remove.htm | 11 - .../html/M_Grpc_Core_Metadata_RemoveAt.htm | 11 - .../html/html/M_Grpc_Core_Metadata__ctor.htm | 4 - .../html/html/M_Grpc_Core_Method_2__ctor.htm | 27 - .../html/M_Grpc_Core_RpcException__ctor.htm | 11 - .../html/M_Grpc_Core_RpcException__ctor_1.htm | 15 - ...rverCallContext_CreatePropagationToken.htm | 16 - ...rCallContext_WriteResponseHeadersAsync.htm | 14 - .../M_Grpc_Core_ServerCredentials__ctor.htm | 2 - .../html/M_Grpc_Core_ServerPort__ctor.htm | 19 - ...ServiceDefinition_Builder_AddMethod__2.htm | 22 - ...rviceDefinition_Builder_AddMethod__2_1.htm | 22 - ...rviceDefinition_Builder_AddMethod__2_2.htm | 22 - ...rviceDefinition_Builder_AddMethod__2_3.htm | 22 - ..._ServerServiceDefinition_Builder_Build.htm | 5 - ..._ServerServiceDefinition_Builder__ctor.htm | 11 - ..._ServerServiceDefinition_CreateBuilder.htm | 12 - .../html/M_Grpc_Core_Server_KillAsync.htm | 6 - ...c_Core_Server_ServerPortCollection_Add.htm | 13 - ...Core_Server_ServerPortCollection_Add_1.htm | 20 - ...ver_ServerPortCollection_GetEnumerator.htm | 5 - ...Server_ServiceDefinitionCollection_Add.htm | 13 - ...viceDefinitionCollection_GetEnumerator.htm | 5 - .../html/M_Grpc_Core_Server_ShutdownAsync.htm | 7 - .../html/html/M_Grpc_Core_Server_Start.htm | 5 - .../html/html/M_Grpc_Core_Server__ctor.htm | 15 - .../html/M_Grpc_Core_SslCredentials__ctor.htm | 6 - .../M_Grpc_Core_SslCredentials__ctor_1.htm | 12 - .../M_Grpc_Core_SslCredentials__ctor_2.htm | 15 - ...M_Grpc_Core_SslServerCredentials__ctor.htm | 13 - ...Grpc_Core_SslServerCredentials__ctor_1.htm | 19 - .../html/html/M_Grpc_Core_Status_ToString.htm | 5 - .../html/html/M_Grpc_Core_Status__ctor.htm | 15 - ..._AsyncStreamExtensions_ForEachAsync__1.htm | 23 - ...s_AsyncStreamExtensions_ToListAsync__1.htm | 19 - ...AsyncStreamExtensions_WriteAllAsync__1.htm | 32 - ...yncStreamExtensions_WriteAllAsync__1_1.htm | 23 - ..._Core_Utils_BenchmarkUtil_RunBenchmark.htm | 20 - ...Core_Utils_Preconditions_CheckArgument.htm | 12 - ...re_Utils_Preconditions_CheckArgument_1.htm | 16 - ...re_Utils_Preconditions_CheckNotNull__1.htm | 14 - ..._Utils_Preconditions_CheckNotNull__1_1.htm | 18 - ...pc_Core_Utils_Preconditions_CheckState.htm | 12 - ..._Core_Utils_Preconditions_CheckState_1.htm | 16 - .../html/M_Grpc_Core_WriteOptions__ctor.htm | 15 - .../Methods_T_Grpc_Auth_AuthInterceptors.htm | 8 - ...T_Grpc_Core_AsyncClientStreamingCall_2.htm | 16 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.htm | 14 - ...T_Grpc_Core_AsyncServerStreamingCall_1.htm | 14 - .../Methods_T_Grpc_Core_AsyncUnaryCall_1.htm | 16 - ...ds_T_Grpc_Core_CallInvocationDetails_2.htm | 6 - .../html/Methods_T_Grpc_Core_CallOptions.htm | 12 - .../html/html/Methods_T_Grpc_Core_Calls.htm | 17 - .../html/html/Methods_T_Grpc_Core_Channel.htm | 16 - .../Methods_T_Grpc_Core_ChannelOption.htm | 3 - .../html/Methods_T_Grpc_Core_ClientBase.htm | 5 - ..._T_Grpc_Core_ContextPropagationOptions.htm | 3 - ...ds_T_Grpc_Core_ContextPropagationToken.htm | 3 - .../html/Methods_T_Grpc_Core_Credentials.htm | 3 - .../Methods_T_Grpc_Core_GrpcEnvironment.htm | 5 - ...thods_T_Grpc_Core_IAsyncStreamReader_1.htm | 9 - ...thods_T_Grpc_Core_IAsyncStreamWriter_1.htm | 5 - ...hods_T_Grpc_Core_IClientStreamWriter_1.htm | 12 - ...hods_T_Grpc_Core_IServerStreamWriter_1.htm | 9 - ...Methods_T_Grpc_Core_KeyCertificatePair.htm | 3 - ...hods_T_Grpc_Core_Logging_ConsoleLogger.htm | 5 - .../Methods_T_Grpc_Core_Logging_ILogger.htm | 3 - .../html/Methods_T_Grpc_Core_Marshaller_1.htm | 3 - .../html/Methods_T_Grpc_Core_Marshallers.htm | 5 - .../html/Methods_T_Grpc_Core_Metadata.htm | 3 - .../Methods_T_Grpc_Core_Metadata_Entry.htm | 5 - .../html/Methods_T_Grpc_Core_Method_2.htm | 3 - .../html/Methods_T_Grpc_Core_RpcException.htm | 3 - .../html/html/Methods_T_Grpc_Core_Server.htm | 12 - .../Methods_T_Grpc_Core_ServerCallContext.htm | 9 - .../Methods_T_Grpc_Core_ServerCredentials.htm | 3 - .../html/Methods_T_Grpc_Core_ServerPort.htm | 3 - ...ds_T_Grpc_Core_ServerServiceDefinition.htm | 5 - ...c_Core_ServerServiceDefinition_Builder.htm | 13 - ..._Grpc_Core_Server_ServerPortCollection.htm | 10 - ...ore_Server_ServiceDefinitionCollection.htm | 8 - .../Methods_T_Grpc_Core_SslCredentials.htm | 3 - ...thods_T_Grpc_Core_SslServerCredentials.htm | 3 - .../html/html/Methods_T_Grpc_Core_Status.htm | 5 - ..._Grpc_Core_Utils_AsyncStreamExtensions.htm | 12 - ...ethods_T_Grpc_Core_Utils_BenchmarkUtil.htm | 5 - ...ethods_T_Grpc_Core_Utils_Preconditions.htm | 15 - .../html/Methods_T_Grpc_Core_WriteOptions.htm | 3 - doc/ref/csharp/html/html/N_Grpc_Auth.htm | 6 - doc/ref/csharp/html/html/N_Grpc_Core.htm | 133 --- .../csharp/html/html/N_Grpc_Core_Logging.htm | 5 - .../csharp/html/html/N_Grpc_Core_Utils.htm | 9 - ...rpc_Core_CallInvocationDetails_2__ctor.htm | 9 - ...Overload_Grpc_Core_ChannelOption__ctor.htm | 7 - .../html/Overload_Grpc_Core_Channel__ctor.htm | 8 - ..._Grpc_Core_Logging_ConsoleLogger_Error.htm | 3 - ...rpc_Core_Logging_ConsoleLogger_Warning.htm | 3 - ...erload_Grpc_Core_Logging_ILogger_Error.htm | 3 - ...load_Grpc_Core_Logging_ILogger_Warning.htm | 3 - .../html/Overload_Grpc_Core_Metadata_Add.htm | 3 - ...verload_Grpc_Core_Metadata_Entry__ctor.htm | 7 - .../Overload_Grpc_Core_RpcException__ctor.htm | 7 - ...verServiceDefinition_Builder_AddMethod.htm | 11 - ...c_Core_Server_ServerPortCollection_Add.htm | 8 - ...verload_Grpc_Core_SslCredentials__ctor.htm | 12 - ...d_Grpc_Core_SslServerCredentials__ctor.htm | 9 - ...ls_AsyncStreamExtensions_WriteAllAsync.htm | 8 - ...Core_Utils_Preconditions_CheckArgument.htm | 7 - ..._Core_Utils_Preconditions_CheckNotNull.htm | 7 - ...pc_Core_Utils_Preconditions_CheckState.htm | 7 - ...yncClientStreamingCall_2_RequestStream.htm | 8 - ...yncClientStreamingCall_2_ResponseAsync.htm | 8 - ...ntStreamingCall_2_ResponseHeadersAsync.htm | 8 - ...yncDuplexStreamingCall_2_RequestStream.htm | 8 - ...exStreamingCall_2_ResponseHeadersAsync.htm | 8 - ...ncDuplexStreamingCall_2_ResponseStream.htm | 8 - ...erStreamingCall_1_ResponseHeadersAsync.htm | 8 - ...ncServerStreamingCall_1_ResponseStream.htm | 8 - ...pc_Core_AsyncUnaryCall_1_ResponseAsync.htm | 8 - ..._AsyncUnaryCall_1_ResponseHeadersAsync.htm | 8 - ...c_Core_CallInvocationDetails_2_Channel.htm | 8 - ...Grpc_Core_CallInvocationDetails_2_Host.htm | 8 - ...pc_Core_CallInvocationDetails_2_Method.htm | 8 - ...c_Core_CallInvocationDetails_2_Options.htm | 8 - ...lInvocationDetails_2_RequestMarshaller.htm | 8 - ...InvocationDetails_2_ResponseMarshaller.htm | 8 - ...rpc_Core_CallOptions_CancellationToken.htm | 8 - .../html/P_Grpc_Core_CallOptions_Deadline.htm | 8 - .../html/P_Grpc_Core_CallOptions_Headers.htm | 8 - ...Grpc_Core_CallOptions_PropagationToken.htm | 8 - .../P_Grpc_Core_CallOptions_WriteOptions.htm | 8 - .../P_Grpc_Core_ChannelOption_IntValue.htm | 8 - .../html/P_Grpc_Core_ChannelOption_Name.htm | 8 - .../P_Grpc_Core_ChannelOption_StringValue.htm | 8 - .../html/P_Grpc_Core_ChannelOption_Type.htm | 8 - .../P_Grpc_Core_Channel_ResolvedTarget.htm | 6 - .../html/html/P_Grpc_Core_Channel_State.htm | 8 - .../html/html/P_Grpc_Core_Channel_Target.htm | 6 - .../html/P_Grpc_Core_ClientBase_Channel.htm | 8 - ...Grpc_Core_ClientBase_HeaderInterceptor.htm | 11 - .../html/html/P_Grpc_Core_ClientBase_Host.htm | 13 - ...agationOptions_IsPropagateCancellation.htm | 6 - ...PropagationOptions_IsPropagateDeadline.htm | 6 - .../html/P_Grpc_Core_Credentials_Insecure.htm | 9 - .../P_Grpc_Core_GrpcEnvironment_Logger.htm | 8 - ...Core_IAsyncStreamWriter_1_WriteOptions.htm | 12 - ...rpc_Core_IHasWriteOptions_WriteOptions.htm | 9 - .../html/P_Grpc_Core_IMethod_FullName.htm | 8 - .../html/html/P_Grpc_Core_IMethod_Name.htm | 7 - .../html/P_Grpc_Core_IMethod_ServiceName.htm | 7 - .../html/html/P_Grpc_Core_IMethod_Type.htm | 7 - ...re_KeyCertificatePair_CertificateChain.htm | 8 - ...rpc_Core_KeyCertificatePair_PrivateKey.htm | 8 - .../P_Grpc_Core_Marshaller_1_Deserializer.htm | 8 - .../P_Grpc_Core_Marshaller_1_Serializer.htm | 8 - ...Grpc_Core_Marshallers_StringMarshaller.htm | 8 - .../html/html/P_Grpc_Core_Metadata_Count.htm | 6 - .../P_Grpc_Core_Metadata_Entry_IsBinary.htm | 8 - .../html/P_Grpc_Core_Metadata_Entry_Key.htm | 8 - .../html/P_Grpc_Core_Metadata_Entry_Value.htm | 8 - .../P_Grpc_Core_Metadata_Entry_ValueBytes.htm | 8 - .../html/P_Grpc_Core_Metadata_IsReadOnly.htm | 6 - .../html/html/P_Grpc_Core_Metadata_Item.htm | 12 - .../html/P_Grpc_Core_Method_2_FullName.htm | 9 - .../html/html/P_Grpc_Core_Method_2_Name.htm | 8 - ...P_Grpc_Core_Method_2_RequestMarshaller.htm | 8 - ..._Grpc_Core_Method_2_ResponseMarshaller.htm | 8 - .../html/P_Grpc_Core_Method_2_ServiceName.htm | 8 - .../html/html/P_Grpc_Core_Method_2_Type.htm | 8 - .../html/P_Grpc_Core_RpcException_Status.htm | 8 - ...re_ServerCallContext_CancellationToken.htm | 6 - ...P_Grpc_Core_ServerCallContext_Deadline.htm | 6 - .../P_Grpc_Core_ServerCallContext_Host.htm | 6 - .../P_Grpc_Core_ServerCallContext_Method.htm | 6 - .../P_Grpc_Core_ServerCallContext_Peer.htm | 6 - ..._Core_ServerCallContext_RequestHeaders.htm | 6 - ...ore_ServerCallContext_ResponseTrailers.htm | 6 - .../P_Grpc_Core_ServerCallContext_Status.htm | 8 - ...pc_Core_ServerCallContext_WriteOptions.htm | 12 - ...P_Grpc_Core_ServerCredentials_Insecure.htm | 9 - .../html/P_Grpc_Core_ServerPort_BoundPort.htm | 8 - .../P_Grpc_Core_ServerPort_Credentials.htm | 6 - .../html/html/P_Grpc_Core_ServerPort_Host.htm | 6 - .../html/html/P_Grpc_Core_ServerPort_Port.htm | 6 - .../html/html/P_Grpc_Core_Server_Ports.htm | 9 - .../html/html/P_Grpc_Core_Server_Services.htm | 9 - .../html/P_Grpc_Core_Server_ShutdownTask.htm | 8 - ...Core_SslCredentials_KeyCertificatePair.htm | 9 - ...c_Core_SslCredentials_RootCertificates.htm | 8 - ...rCredentials_ForceClientAuthentication.htm | 8 - ...lServerCredentials_KeyCertificatePairs.htm | 8 - ..._SslServerCredentials_RootCertificates.htm | 8 - .../html/html/P_Grpc_Core_Status_Detail.htm | 8 - .../html/P_Grpc_Core_Status_StatusCode.htm | 8 - .../html/P_Grpc_Core_WriteOptions_Flags.htm | 8 - ...T_Grpc_Core_AsyncClientStreamingCall_2.htm | 9 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.htm | 9 - ...T_Grpc_Core_AsyncServerStreamingCall_1.htm | 7 - ...roperties_T_Grpc_Core_AsyncUnaryCall_1.htm | 7 - ...es_T_Grpc_Core_CallInvocationDetails_2.htm | 15 - .../Properties_T_Grpc_Core_CallOptions.htm | 13 - .../html/Properties_T_Grpc_Core_Channel.htm | 5 - .../Properties_T_Grpc_Core_ChannelOption.htm | 11 - .../Properties_T_Grpc_Core_ClientBase.htm | 13 - ..._T_Grpc_Core_ContextPropagationOptions.htm | 3 - .../Properties_T_Grpc_Core_Credentials.htm | 6 - ...Properties_T_Grpc_Core_GrpcEnvironment.htm | 5 - ...rties_T_Grpc_Core_IAsyncStreamReader_1.htm | 3 - ...rties_T_Grpc_Core_IAsyncStreamWriter_1.htm | 8 - ...ties_T_Grpc_Core_IClientStreamWriter_1.htm | 8 - ...roperties_T_Grpc_Core_IHasWriteOptions.htm | 5 - .../html/Properties_T_Grpc_Core_IMethod.htm | 12 - ...ties_T_Grpc_Core_IServerStreamWriter_1.htm | 8 - ...perties_T_Grpc_Core_KeyCertificatePair.htm | 7 - .../Properties_T_Grpc_Core_Marshaller_1.htm | 7 - .../Properties_T_Grpc_Core_Marshallers.htm | 5 - .../html/Properties_T_Grpc_Core_Metadata.htm | 3 - .../Properties_T_Grpc_Core_Metadata_Entry.htm | 11 - .../html/Properties_T_Grpc_Core_Method_2.htm | 16 - .../Properties_T_Grpc_Core_RpcException.htm | 5 - .../html/Properties_T_Grpc_Core_Server.htm | 11 - ...operties_T_Grpc_Core_ServerCallContext.htm | 7 - ...operties_T_Grpc_Core_ServerCredentials.htm | 6 - .../Properties_T_Grpc_Core_ServerPort.htm | 3 - .../Properties_T_Grpc_Core_SslCredentials.htm | 8 - ...rties_T_Grpc_Core_SslServerCredentials.htm | 9 - .../html/Properties_T_Grpc_Core_Status.htm | 7 - .../Properties_T_Grpc_Core_WriteOptions.htm | 5 - .../html/html/R_Project_Documentation.htm | 11 - .../html/T_Grpc_Auth_AuthInterceptors.htm | 13 - ...T_Grpc_Core_AsyncClientStreamingCall_2.htm | 33 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.htm | 31 - ...T_Grpc_Core_AsyncServerStreamingCall_1.htm | 29 - .../html/T_Grpc_Core_AsyncUnaryCall_1.htm | 31 - .../T_Grpc_Core_CallInvocationDetails_2.htm | 33 - .../html/html/T_Grpc_Core_CallOptions.htm | 31 - .../csharp/html/html/T_Grpc_Core_Calls.htm | 24 - .../csharp/html/html/T_Grpc_Core_Channel.htm | 31 - .../html/html/T_Grpc_Core_ChannelOption.htm | 23 - .../T_Grpc_Core_ChannelOption_OptionType.htm | 9 - .../html/html/T_Grpc_Core_ChannelOptions.htm | 7 - .../html/html/T_Grpc_Core_ChannelState.htm | 16 - .../html/html/T_Grpc_Core_ClientBase.htm | 24 - ...rpc_Core_ClientStreamingServerMethod_2.htm | 21 - .../html/T_Grpc_Core_CompressionLevel.htm | 13 - .../T_Grpc_Core_ContextPropagationOptions.htm | 15 - .../T_Grpc_Core_ContextPropagationToken.htm | 10 - .../html/html/T_Grpc_Core_Credentials.htm | 13 - ...rpc_Core_DuplexStreamingServerMethod_2.htm | 25 - .../html/html/T_Grpc_Core_GrpcEnvironment.htm | 11 - .../html/T_Grpc_Core_HeaderInterceptor.htm | 19 - .../html/T_Grpc_Core_IAsyncStreamReader_1.htm | 22 - .../html/T_Grpc_Core_IAsyncStreamWriter_1.htm | 16 - .../T_Grpc_Core_IClientStreamWriter_1.htm | 27 - .../html/T_Grpc_Core_IHasWriteOptions.htm | 7 - .../csharp/html/html/T_Grpc_Core_IMethod.htm | 14 - .../T_Grpc_Core_IServerStreamWriter_1.htm | 24 - .../html/T_Grpc_Core_KeyCertificatePair.htm | 16 - .../T_Grpc_Core_Logging_ConsoleLogger.htm | 11 - .../html/html/T_Grpc_Core_Logging_ILogger.htm | 3 - .../html/html/T_Grpc_Core_Marshaller_1.htm | 17 - .../html/html/T_Grpc_Core_Marshallers.htm | 13 - .../csharp/html/html/T_Grpc_Core_Metadata.htm | 29 - .../html/html/T_Grpc_Core_Metadata_Entry.htm | 24 - .../html/html/T_Grpc_Core_MethodType.htm | 5 - .../csharp/html/html/T_Grpc_Core_Method_2.htm | 30 - .../html/html/T_Grpc_Core_RpcException.htm | 21 - .../csharp/html/html/T_Grpc_Core_Server.htm | 28 - .../html/T_Grpc_Core_ServerCallContext.htm | 17 - .../html/T_Grpc_Core_ServerCredentials.htm | 13 - .../html/html/T_Grpc_Core_ServerPort.htm | 16 - .../T_Grpc_Core_ServerServiceDefinition.htm | 9 - ...c_Core_ServerServiceDefinition_Builder.htm | 19 - ...rpc_Core_ServerStreamingServerMethod_2.htm | 25 - ..._Grpc_Core_Server_ServerPortCollection.htm | 19 - ...ore_Server_ServiceDefinitionCollection.htm | 17 - .../html/html/T_Grpc_Core_SslCredentials.htm | 28 - .../html/T_Grpc_Core_SslServerCredentials.htm | 25 - .../csharp/html/html/T_Grpc_Core_Status.htm | 24 - .../html/html/T_Grpc_Core_StatusCode.htm | 52 - .../html/T_Grpc_Core_UnaryServerMethod_2.htm | 21 - ..._Grpc_Core_Utils_AsyncStreamExtensions.htm | 19 - .../html/T_Grpc_Core_Utils_BenchmarkUtil.htm | 9 - .../html/T_Grpc_Core_Utils_Preconditions.htm | 19 - .../html/html/T_Grpc_Core_VersionInfo.htm | 9 - .../html/html/T_Grpc_Core_WriteFlags.htm | 15 - .../html/html/T_Grpc_Core_WriteOptions.htm | 17 - doc/ref/csharp/html/icons/AlertCaution.png | Bin 618 -> 0 bytes doc/ref/csharp/html/icons/AlertNote.png | Bin 3236 -> 0 bytes doc/ref/csharp/html/icons/AlertSecurity.png | Bin 503 -> 0 bytes doc/ref/csharp/html/icons/CFW.gif | Bin 588 -> 0 bytes doc/ref/csharp/html/icons/CodeExample.png | Bin 196 -> 0 bytes doc/ref/csharp/html/icons/Search.png | Bin 343 -> 0 bytes .../csharp/html/icons/SectionCollapsed.png | Bin 229 -> 0 bytes doc/ref/csharp/html/icons/SectionExpanded.png | Bin 223 -> 0 bytes doc/ref/csharp/html/icons/TocClose.gif | Bin 893 -> 0 bytes doc/ref/csharp/html/icons/TocCollapsed.gif | Bin 838 -> 0 bytes doc/ref/csharp/html/icons/TocExpanded.gif | Bin 837 -> 0 bytes doc/ref/csharp/html/icons/TocOpen.gif | Bin 896 -> 0 bytes doc/ref/csharp/html/icons/favicon.ico | Bin 25094 -> 0 bytes doc/ref/csharp/html/icons/privclass.gif | Bin 621 -> 0 bytes doc/ref/csharp/html/icons/privdelegate.gif | Bin 1045 -> 0 bytes doc/ref/csharp/html/icons/privenumeration.gif | Bin 597 -> 0 bytes doc/ref/csharp/html/icons/privevent.gif | Bin 580 -> 0 bytes doc/ref/csharp/html/icons/privextension.gif | Bin 608 -> 0 bytes doc/ref/csharp/html/icons/privfield.gif | Bin 574 -> 0 bytes doc/ref/csharp/html/icons/privinterface.gif | Bin 585 -> 0 bytes doc/ref/csharp/html/icons/privmethod.gif | Bin 603 -> 0 bytes doc/ref/csharp/html/icons/privproperty.gif | Bin 1054 -> 0 bytes doc/ref/csharp/html/icons/privstructure.gif | Bin 630 -> 0 bytes doc/ref/csharp/html/icons/protclass.gif | Bin 600 -> 0 bytes doc/ref/csharp/html/icons/protdelegate.gif | Bin 1041 -> 0 bytes doc/ref/csharp/html/icons/protenumeration.gif | Bin 583 -> 0 bytes doc/ref/csharp/html/icons/protevent.gif | Bin 564 -> 0 bytes doc/ref/csharp/html/icons/protextension.gif | Bin 589 -> 0 bytes doc/ref/csharp/html/icons/protfield.gif | Bin 570 -> 0 bytes doc/ref/csharp/html/icons/protinterface.gif | Bin 562 -> 0 bytes doc/ref/csharp/html/icons/protmethod.gif | Bin 183 -> 0 bytes doc/ref/csharp/html/icons/protoperator.gif | Bin 547 -> 0 bytes doc/ref/csharp/html/icons/protproperty.gif | Bin 1039 -> 0 bytes doc/ref/csharp/html/icons/protstructure.gif | Bin 619 -> 0 bytes doc/ref/csharp/html/icons/pubclass.gif | Bin 368 -> 0 bytes doc/ref/csharp/html/icons/pubdelegate.gif | Bin 1041 -> 0 bytes doc/ref/csharp/html/icons/pubenumeration.gif | Bin 339 -> 0 bytes doc/ref/csharp/html/icons/pubevent.gif | Bin 314 -> 0 bytes doc/ref/csharp/html/icons/pubextension.gif | Bin 551 -> 0 bytes doc/ref/csharp/html/icons/pubfield.gif | Bin 311 -> 0 bytes doc/ref/csharp/html/icons/pubinterface.gif | Bin 314 -> 0 bytes doc/ref/csharp/html/icons/pubmethod.gif | Bin 329 -> 0 bytes doc/ref/csharp/html/icons/puboperator.gif | Bin 310 -> 0 bytes doc/ref/csharp/html/icons/pubproperty.gif | Bin 609 -> 0 bytes doc/ref/csharp/html/icons/pubstructure.gif | Bin 595 -> 0 bytes doc/ref/csharp/html/icons/slMobile.gif | Bin 909 -> 0 bytes doc/ref/csharp/html/icons/static.gif | Bin 879 -> 0 bytes doc/ref/csharp/html/icons/xna.gif | Bin 549 -> 0 bytes doc/ref/csharp/html/index.html | 14 - .../csharp/html/scripts/branding-Website.js | 624 ---------- doc/ref/csharp/html/scripts/branding.js | 528 --------- .../csharp/html/scripts/jquery-1.11.0.min.js | 4 - doc/ref/csharp/html/search.html | 35 - doc/ref/csharp/html/styles/branding-Help1.css | 40 - .../html/styles/branding-HelpViewer.css | 48 - .../csharp/html/styles/branding-Website.css | 156 --- doc/ref/csharp/html/styles/branding-cs-CZ.css | 3 - doc/ref/csharp/html/styles/branding-de-DE.css | 3 - doc/ref/csharp/html/styles/branding-en-US.css | 3 - doc/ref/csharp/html/styles/branding-es-ES.css | 3 - doc/ref/csharp/html/styles/branding-fr-FR.css | 3 - doc/ref/csharp/html/styles/branding-it-IT.css | 3 - doc/ref/csharp/html/styles/branding-ja-JP.css | 18 - doc/ref/csharp/html/styles/branding-ko-KR.css | 19 - doc/ref/csharp/html/styles/branding-pl-PL.css | 3 - doc/ref/csharp/html/styles/branding-pt-BR.css | 3 - doc/ref/csharp/html/styles/branding-ru-RU.css | 3 - doc/ref/csharp/html/styles/branding-tr-TR.css | 3 - doc/ref/csharp/html/styles/branding-zh-CN.css | 18 - doc/ref/csharp/html/styles/branding-zh-TW.css | 18 - doc/ref/csharp/html/styles/branding.css | 561 --------- .../toc/Fields_T_Grpc_Core_ChannelOptions.xml | 1 - ..._T_Grpc_Core_ContextPropagationOptions.xml | 1 - .../html/toc/Fields_T_Grpc_Core_Metadata.xml | 1 - .../toc/Fields_T_Grpc_Core_ServerPort.xml | 1 - .../html/toc/Fields_T_Grpc_Core_Status.xml | 1 - .../toc/Fields_T_Grpc_Core_VersionInfo.xml | 1 - .../toc/Fields_T_Grpc_Core_WriteOptions.xml | 1 - .../Methods_T_Grpc_Auth_AuthInterceptors.xml | 1 - ...T_Grpc_Core_AsyncClientStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncServerStreamingCall_1.xml | 1 - .../Methods_T_Grpc_Core_AsyncUnaryCall_1.xml | 1 - ...ds_T_Grpc_Core_CallInvocationDetails_2.xml | 1 - .../toc/Methods_T_Grpc_Core_CallOptions.xml | 1 - .../html/toc/Methods_T_Grpc_Core_Calls.xml | 1 - .../html/toc/Methods_T_Grpc_Core_Channel.xml | 1 - .../toc/Methods_T_Grpc_Core_ClientBase.xml | 1 - .../Methods_T_Grpc_Core_GrpcEnvironment.xml | 1 - ...thods_T_Grpc_Core_IAsyncStreamWriter_1.xml | 1 - ...hods_T_Grpc_Core_IClientStreamWriter_1.xml | 1 - ...hods_T_Grpc_Core_Logging_ConsoleLogger.xml | 1 - .../Methods_T_Grpc_Core_Logging_ILogger.xml | 1 - .../toc/Methods_T_Grpc_Core_Marshallers.xml | 1 - .../html/toc/Methods_T_Grpc_Core_Metadata.xml | 1 - .../Methods_T_Grpc_Core_Metadata_Entry.xml | 1 - .../html/toc/Methods_T_Grpc_Core_Server.xml | 1 - .../Methods_T_Grpc_Core_ServerCallContext.xml | 1 - ...ds_T_Grpc_Core_ServerServiceDefinition.xml | 1 - ...c_Core_ServerServiceDefinition_Builder.xml | 1 - ..._Grpc_Core_Server_ServerPortCollection.xml | 1 - ...ore_Server_ServiceDefinitionCollection.xml | 1 - .../html/toc/Methods_T_Grpc_Core_Status.xml | 1 - ..._Grpc_Core_Utils_AsyncStreamExtensions.xml | 1 - ...ethods_T_Grpc_Core_Utils_BenchmarkUtil.xml | 1 - ...ethods_T_Grpc_Core_Utils_Preconditions.xml | 1 - doc/ref/csharp/html/toc/N_Grpc_Auth.xml | 1 - doc/ref/csharp/html/toc/N_Grpc_Core.xml | 1 - .../csharp/html/toc/N_Grpc_Core_Logging.xml | 1 - doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml | 1 - ...rpc_Core_CallInvocationDetails_2__ctor.xml | 1 - ...Overload_Grpc_Core_ChannelOption__ctor.xml | 1 - .../toc/Overload_Grpc_Core_Channel__ctor.xml | 1 - ..._Grpc_Core_Logging_ConsoleLogger_Error.xml | 1 - ...rpc_Core_Logging_ConsoleLogger_Warning.xml | 1 - ...erload_Grpc_Core_Logging_ILogger_Error.xml | 1 - ...load_Grpc_Core_Logging_ILogger_Warning.xml | 1 - .../toc/Overload_Grpc_Core_Metadata_Add.xml | 1 - ...verload_Grpc_Core_Metadata_Entry__ctor.xml | 1 - .../Overload_Grpc_Core_RpcException__ctor.xml | 1 - ...verServiceDefinition_Builder_AddMethod.xml | 1 - ...c_Core_Server_ServerPortCollection_Add.xml | 1 - ...verload_Grpc_Core_SslCredentials__ctor.xml | 1 - ...d_Grpc_Core_SslServerCredentials__ctor.xml | 1 - ...ls_AsyncStreamExtensions_WriteAllAsync.xml | 1 - ...Core_Utils_Preconditions_CheckArgument.xml | 1 - ..._Core_Utils_Preconditions_CheckNotNull.xml | 1 - ...pc_Core_Utils_Preconditions_CheckState.xml | 1 - ...T_Grpc_Core_AsyncClientStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncServerStreamingCall_1.xml | 1 - ...roperties_T_Grpc_Core_AsyncUnaryCall_1.xml | 1 - ...es_T_Grpc_Core_CallInvocationDetails_2.xml | 1 - .../Properties_T_Grpc_Core_CallOptions.xml | 1 - .../toc/Properties_T_Grpc_Core_Channel.xml | 1 - .../Properties_T_Grpc_Core_ChannelOption.xml | 1 - .../toc/Properties_T_Grpc_Core_ClientBase.xml | 1 - ..._T_Grpc_Core_ContextPropagationOptions.xml | 1 - .../Properties_T_Grpc_Core_Credentials.xml | 1 - ...Properties_T_Grpc_Core_GrpcEnvironment.xml | 1 - ...rties_T_Grpc_Core_IAsyncStreamWriter_1.xml | 1 - ...roperties_T_Grpc_Core_IHasWriteOptions.xml | 1 - .../toc/Properties_T_Grpc_Core_IMethod.xml | 1 - ...perties_T_Grpc_Core_KeyCertificatePair.xml | 1 - .../Properties_T_Grpc_Core_Marshaller_1.xml | 1 - .../Properties_T_Grpc_Core_Marshallers.xml | 1 - .../toc/Properties_T_Grpc_Core_Metadata.xml | 1 - .../Properties_T_Grpc_Core_Metadata_Entry.xml | 1 - .../toc/Properties_T_Grpc_Core_Method_2.xml | 1 - .../Properties_T_Grpc_Core_RpcException.xml | 1 - .../toc/Properties_T_Grpc_Core_Server.xml | 1 - ...operties_T_Grpc_Core_ServerCallContext.xml | 1 - ...operties_T_Grpc_Core_ServerCredentials.xml | 1 - .../toc/Properties_T_Grpc_Core_ServerPort.xml | 1 - .../Properties_T_Grpc_Core_SslCredentials.xml | 1 - ...rties_T_Grpc_Core_SslServerCredentials.xml | 1 - .../toc/Properties_T_Grpc_Core_Status.xml | 1 - .../Properties_T_Grpc_Core_WriteOptions.xml | 1 - .../html/toc/R_Project_Documentation.xml | 1 - .../html/toc/T_Grpc_Auth_AuthInterceptors.xml | 1 - ...T_Grpc_Core_AsyncClientStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncDuplexStreamingCall_2.xml | 1 - ...T_Grpc_Core_AsyncServerStreamingCall_1.xml | 1 - .../html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml | 1 - .../T_Grpc_Core_CallInvocationDetails_2.xml | 1 - .../html/toc/T_Grpc_Core_CallOptions.xml | 1 - doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml | 1 - .../csharp/html/toc/T_Grpc_Core_Channel.xml | 1 - .../html/toc/T_Grpc_Core_ChannelOption.xml | 1 - .../html/toc/T_Grpc_Core_ChannelOptions.xml | 1 - .../html/toc/T_Grpc_Core_ClientBase.xml | 1 - .../T_Grpc_Core_ContextPropagationOptions.xml | 1 - .../T_Grpc_Core_ContextPropagationToken.xml | 1 - .../html/toc/T_Grpc_Core_Credentials.xml | 1 - .../html/toc/T_Grpc_Core_GrpcEnvironment.xml | 1 - .../toc/T_Grpc_Core_IAsyncStreamReader_1.xml | 1 - .../toc/T_Grpc_Core_IAsyncStreamWriter_1.xml | 1 - .../toc/T_Grpc_Core_IClientStreamWriter_1.xml | 1 - .../html/toc/T_Grpc_Core_IHasWriteOptions.xml | 1 - .../csharp/html/toc/T_Grpc_Core_IMethod.xml | 1 - .../toc/T_Grpc_Core_IServerStreamWriter_1.xml | 1 - .../toc/T_Grpc_Core_KeyCertificatePair.xml | 1 - .../toc/T_Grpc_Core_Logging_ConsoleLogger.xml | 1 - .../html/toc/T_Grpc_Core_Logging_ILogger.xml | 1 - .../html/toc/T_Grpc_Core_Marshaller_1.xml | 1 - .../html/toc/T_Grpc_Core_Marshallers.xml | 1 - .../csharp/html/toc/T_Grpc_Core_Metadata.xml | 1 - .../html/toc/T_Grpc_Core_Metadata_Entry.xml | 1 - .../csharp/html/toc/T_Grpc_Core_Method_2.xml | 1 - .../html/toc/T_Grpc_Core_RpcException.xml | 1 - .../csharp/html/toc/T_Grpc_Core_Server.xml | 1 - .../toc/T_Grpc_Core_ServerCallContext.xml | 1 - .../toc/T_Grpc_Core_ServerCredentials.xml | 1 - .../html/toc/T_Grpc_Core_ServerPort.xml | 1 - .../T_Grpc_Core_ServerServiceDefinition.xml | 1 - ...c_Core_ServerServiceDefinition_Builder.xml | 1 - ..._Grpc_Core_Server_ServerPortCollection.xml | 1 - ...ore_Server_ServiceDefinitionCollection.xml | 1 - .../html/toc/T_Grpc_Core_SslCredentials.xml | 1 - .../toc/T_Grpc_Core_SslServerCredentials.xml | 1 - .../csharp/html/toc/T_Grpc_Core_Status.xml | 1 - ..._Grpc_Core_Utils_AsyncStreamExtensions.xml | 1 - .../toc/T_Grpc_Core_Utils_BenchmarkUtil.xml | 1 - .../toc/T_Grpc_Core_Utils_Preconditions.xml | 1 - .../html/toc/T_Grpc_Core_VersionInfo.xml | 1 - .../html/toc/T_Grpc_Core_WriteOptions.xml | 1 - doc/ref/csharp/html/toc/roottoc.xml | 1 - 622 files changed, 8681 deletions(-) delete mode 100644 doc/ref/csharp/.gitignore delete mode 100644 doc/ref/csharp/html/SearchHelp.aspx delete mode 100644 doc/ref/csharp/html/SearchHelp.inc.php delete mode 100644 doc/ref/csharp/html/SearchHelp.php delete mode 100644 doc/ref/csharp/html/Web.Config delete mode 100644 doc/ref/csharp/html/WebKI.xml delete mode 100644 doc/ref/csharp/html/WebTOC.xml delete mode 100644 doc/ref/csharp/html/fti/FTI_100.json delete mode 100644 doc/ref/csharp/html/fti/FTI_101.json delete mode 100644 doc/ref/csharp/html/fti/FTI_102.json delete mode 100644 doc/ref/csharp/html/fti/FTI_103.json delete mode 100644 doc/ref/csharp/html/fti/FTI_104.json delete mode 100644 doc/ref/csharp/html/fti/FTI_105.json delete mode 100644 doc/ref/csharp/html/fti/FTI_107.json delete mode 100644 doc/ref/csharp/html/fti/FTI_108.json delete mode 100644 doc/ref/csharp/html/fti/FTI_109.json delete mode 100644 doc/ref/csharp/html/fti/FTI_110.json delete mode 100644 doc/ref/csharp/html/fti/FTI_111.json delete mode 100644 doc/ref/csharp/html/fti/FTI_112.json delete mode 100644 doc/ref/csharp/html/fti/FTI_113.json delete mode 100644 doc/ref/csharp/html/fti/FTI_114.json delete mode 100644 doc/ref/csharp/html/fti/FTI_115.json delete mode 100644 doc/ref/csharp/html/fti/FTI_116.json delete mode 100644 doc/ref/csharp/html/fti/FTI_117.json delete mode 100644 doc/ref/csharp/html/fti/FTI_118.json delete mode 100644 doc/ref/csharp/html/fti/FTI_119.json delete mode 100644 doc/ref/csharp/html/fti/FTI_122.json delete mode 100644 doc/ref/csharp/html/fti/FTI_97.json delete mode 100644 doc/ref/csharp/html/fti/FTI_98.json delete mode 100644 doc/ref/csharp/html/fti/FTI_99.json delete mode 100644 doc/ref/csharp/html/fti/FTI_Files.json delete mode 100644 doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm delete mode 100644 doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm delete mode 100644 doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm delete mode 100644 doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm delete mode 100644 doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/N_Grpc_Auth.htm delete mode 100644 doc/ref/csharp/html/html/N_Grpc_Core.htm delete mode 100644 doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm delete mode 100644 doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm delete mode 100644 doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm delete mode 100644 doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm delete mode 100644 doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/R_Project_Documentation.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Status.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm delete mode 100644 doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm delete mode 100644 doc/ref/csharp/html/icons/AlertCaution.png delete mode 100644 doc/ref/csharp/html/icons/AlertNote.png delete mode 100644 doc/ref/csharp/html/icons/AlertSecurity.png delete mode 100644 doc/ref/csharp/html/icons/CFW.gif delete mode 100644 doc/ref/csharp/html/icons/CodeExample.png delete mode 100644 doc/ref/csharp/html/icons/Search.png delete mode 100644 doc/ref/csharp/html/icons/SectionCollapsed.png delete mode 100644 doc/ref/csharp/html/icons/SectionExpanded.png delete mode 100644 doc/ref/csharp/html/icons/TocClose.gif delete mode 100644 doc/ref/csharp/html/icons/TocCollapsed.gif delete mode 100644 doc/ref/csharp/html/icons/TocExpanded.gif delete mode 100644 doc/ref/csharp/html/icons/TocOpen.gif delete mode 100644 doc/ref/csharp/html/icons/favicon.ico delete mode 100644 doc/ref/csharp/html/icons/privclass.gif delete mode 100644 doc/ref/csharp/html/icons/privdelegate.gif delete mode 100644 doc/ref/csharp/html/icons/privenumeration.gif delete mode 100644 doc/ref/csharp/html/icons/privevent.gif delete mode 100644 doc/ref/csharp/html/icons/privextension.gif delete mode 100644 doc/ref/csharp/html/icons/privfield.gif delete mode 100644 doc/ref/csharp/html/icons/privinterface.gif delete mode 100644 doc/ref/csharp/html/icons/privmethod.gif delete mode 100644 doc/ref/csharp/html/icons/privproperty.gif delete mode 100644 doc/ref/csharp/html/icons/privstructure.gif delete mode 100644 doc/ref/csharp/html/icons/protclass.gif delete mode 100644 doc/ref/csharp/html/icons/protdelegate.gif delete mode 100644 doc/ref/csharp/html/icons/protenumeration.gif delete mode 100644 doc/ref/csharp/html/icons/protevent.gif delete mode 100644 doc/ref/csharp/html/icons/protextension.gif delete mode 100644 doc/ref/csharp/html/icons/protfield.gif delete mode 100644 doc/ref/csharp/html/icons/protinterface.gif delete mode 100644 doc/ref/csharp/html/icons/protmethod.gif delete mode 100644 doc/ref/csharp/html/icons/protoperator.gif delete mode 100644 doc/ref/csharp/html/icons/protproperty.gif delete mode 100644 doc/ref/csharp/html/icons/protstructure.gif delete mode 100644 doc/ref/csharp/html/icons/pubclass.gif delete mode 100644 doc/ref/csharp/html/icons/pubdelegate.gif delete mode 100644 doc/ref/csharp/html/icons/pubenumeration.gif delete mode 100644 doc/ref/csharp/html/icons/pubevent.gif delete mode 100644 doc/ref/csharp/html/icons/pubextension.gif delete mode 100644 doc/ref/csharp/html/icons/pubfield.gif delete mode 100644 doc/ref/csharp/html/icons/pubinterface.gif delete mode 100644 doc/ref/csharp/html/icons/pubmethod.gif delete mode 100644 doc/ref/csharp/html/icons/puboperator.gif delete mode 100644 doc/ref/csharp/html/icons/pubproperty.gif delete mode 100644 doc/ref/csharp/html/icons/pubstructure.gif delete mode 100644 doc/ref/csharp/html/icons/slMobile.gif delete mode 100644 doc/ref/csharp/html/icons/static.gif delete mode 100644 doc/ref/csharp/html/icons/xna.gif delete mode 100644 doc/ref/csharp/html/index.html delete mode 100644 doc/ref/csharp/html/scripts/branding-Website.js delete mode 100644 doc/ref/csharp/html/scripts/branding.js delete mode 100644 doc/ref/csharp/html/scripts/jquery-1.11.0.min.js delete mode 100644 doc/ref/csharp/html/search.html delete mode 100644 doc/ref/csharp/html/styles/branding-Help1.css delete mode 100644 doc/ref/csharp/html/styles/branding-HelpViewer.css delete mode 100644 doc/ref/csharp/html/styles/branding-Website.css delete mode 100644 doc/ref/csharp/html/styles/branding-cs-CZ.css delete mode 100644 doc/ref/csharp/html/styles/branding-de-DE.css delete mode 100644 doc/ref/csharp/html/styles/branding-en-US.css delete mode 100644 doc/ref/csharp/html/styles/branding-es-ES.css delete mode 100644 doc/ref/csharp/html/styles/branding-fr-FR.css delete mode 100644 doc/ref/csharp/html/styles/branding-it-IT.css delete mode 100644 doc/ref/csharp/html/styles/branding-ja-JP.css delete mode 100644 doc/ref/csharp/html/styles/branding-ko-KR.css delete mode 100644 doc/ref/csharp/html/styles/branding-pl-PL.css delete mode 100644 doc/ref/csharp/html/styles/branding-pt-BR.css delete mode 100644 doc/ref/csharp/html/styles/branding-ru-RU.css delete mode 100644 doc/ref/csharp/html/styles/branding-tr-TR.css delete mode 100644 doc/ref/csharp/html/styles/branding-zh-CN.css delete mode 100644 doc/ref/csharp/html/styles/branding-zh-TW.css delete mode 100644 doc/ref/csharp/html/styles/branding.css delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml delete mode 100644 doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml delete mode 100644 doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml delete mode 100644 doc/ref/csharp/html/toc/N_Grpc_Auth.xml delete mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core.xml delete mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml delete mode 100644 doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml delete mode 100644 doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml delete mode 100644 doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml delete mode 100644 doc/ref/csharp/html/toc/R_Project_Documentation.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml delete mode 100644 doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml delete mode 100644 doc/ref/csharp/html/toc/roottoc.xml diff --git a/doc/ref/csharp/.gitignore b/doc/ref/csharp/.gitignore deleted file mode 100644 index 809997171c5..00000000000 --- a/doc/ref/csharp/.gitignore +++ /dev/null @@ -1 +0,0 @@ -LastBuild.log diff --git a/doc/ref/csharp/html/SearchHelp.aspx b/doc/ref/csharp/html/SearchHelp.aspx deleted file mode 100644 index 6e2a17b6abc..00000000000 --- a/doc/ref/csharp/html/SearchHelp.aspx +++ /dev/null @@ -1,233 +0,0 @@ -<%@ Page Language="C#" EnableViewState="False" %> - - diff --git a/doc/ref/csharp/html/SearchHelp.inc.php b/doc/ref/csharp/html/SearchHelp.inc.php deleted file mode 100644 index b905e130cfd..00000000000 --- a/doc/ref/csharp/html/SearchHelp.inc.php +++ /dev/null @@ -1,173 +0,0 @@ -filename = $file; - $this->pageTitle = $title; - $this->rank = $rank; - } -} - - -/// -/// Split the search text up into keywords -/// -/// The keywords to parse -/// A list containing the words for which to search -function ParseKeywords($keywords) -{ - $keywordList = array(); - $words = preg_split("/[^\w]+/", $keywords); - - foreach($words as $word) - { - $checkWord = strtolower($word); - $first = substr($checkWord, 0, 1); - if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) - { - array_push($keywordList, $checkWord); - } - } - - return $keywordList; -} - - -/// -/// Search for the specified keywords and return the results as a block of -/// HTML. -/// -/// The keywords for which to search -/// The file list -/// The dictionary used to find the words -/// True to sort by title, false to sort by -/// ranking -/// A block of HTML representing the search results. -function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle) -{ - $sb = "
    "; - $matches = array(); - $matchingFileIndices = array(); - $rankings = array(); - - $isFirst = true; - - foreach($keywords as $word) - { - if (!array_key_exists($word, $wordDictionary)) - { - return "Nothing found"; - } - $occurrences = $wordDictionary[$word]; - - $matches[$word] = $occurrences; - $occurrenceIndices = array(); - - // Get a list of the file indices for this match - foreach($occurrences as $entry) - array_push($occurrenceIndices, ($entry >> 16)); - - if($isFirst) - { - $isFirst = false; - foreach($occurrenceIndices as $i) - { - array_push($matchingFileIndices, $i); - } - } - else - { - // After the first match, remove files that do not appear for - // all found keywords. - for($idx = 0; $idx < count($matchingFileIndices); $idx++) - { - if (!in_array($matchingFileIndices[$idx], $occurrenceIndices)) - { - array_splice($matchingFileIndices, $idx, 1); - $idx--; - } - } - } - } - - if(count($matchingFileIndices) == 0) - { - return "Nothing found"; - } - - // Rank the files based on the number of times the words occurs - foreach($matchingFileIndices as $index) - { - // Split out the title, filename, and word count - $fileIndex = explode("\x00", $fileInfo[$index]); - - $title = $fileIndex[0]; - $filename = $fileIndex[1]; - $wordCount = intval($fileIndex[2]); - $matchCount = 0; - - foreach($keywords as $words) - { - $occurrences = $matches[$word]; - - foreach($occurrences as $entry) - { - if(($entry >> 16) == $index) - $matchCount += $entry & 0xFFFF; - } - } - - $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount); - array_push($rankings, $r); - - if(count($rankings) > 99) - break; - } - - // Sort by rank in descending order or by page title in ascending order - if($sortByTitle) - { - usort($rankings, "cmprankbytitle"); - } - else - { - usort($rankings, "cmprank"); - } - - // Format the file list and return the results - foreach($rankings as $r) - { - $f = $r->filename; - $t = $r->pageTitle; - $sb .= "
  1. $t
  2. "; - } - - $sb .= "rank - $x->rank; -} - -function cmprankbytitle($x, $y) -{ - return strcmp($x->pageTitle, $y->pageTitle); -} - -?> diff --git a/doc/ref/csharp/html/SearchHelp.php b/doc/ref/csharp/html/SearchHelp.php deleted file mode 100644 index eaa1e117f94..00000000000 --- a/doc/ref/csharp/html/SearchHelp.php +++ /dev/null @@ -1,58 +0,0 @@ - - Nothing found - $val) - { - $wordDictionary[$ftiWord] = $val; - } - } - } - } - - // Perform the search and return the results as a block of HTML - $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle); - echo $results; -?> \ No newline at end of file diff --git a/doc/ref/csharp/html/Web.Config b/doc/ref/csharp/html/Web.Config deleted file mode 100644 index 26672e8189f..00000000000 --- a/doc/ref/csharp/html/Web.Config +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/ref/csharp/html/WebKI.xml b/doc/ref/csharp/html/WebKI.xml deleted file mode 100644 index 595105b5a68..00000000000 --- a/doc/ref/csharp/html/WebKI.xml +++ /dev/null @@ -1,1005 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/ref/csharp/html/WebTOC.xml b/doc/ref/csharp/html/WebTOC.xml deleted file mode 100644 index 85c1b8a2663..00000000000 --- a/doc/ref/csharp/html/WebTOC.xml +++ /dev/null @@ -1,523 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/ref/csharp/html/fti/FTI_100.json b/doc/ref/csharp/html/fti/FTI_100.json deleted file mode 100644 index 9d216914b0f..00000000000 --- a/doc/ref/csharp/html/fti/FTI_100.json +++ /dev/null @@ -1 +0,0 @@ -{"default":[1,196609,262146,458754,589826,720897,1179654,1441793,1507329,1638406,1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4456449,5701633,6750209,12648449,14221314,14548993,14614529,14811137,17825794,18153473,19267586,21561345,21626881,21692417,21757953,22020098,22085633,22151169,22347779,22544387,22609921,22675457,22806529,23003137,23068673,23265281,23330817,23396353,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707074,25231363],"description":[131073,196609,262145,327681,393217,458753,524289,589825,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686978,2752513,2818050,2883586,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,12255233,12320774,12386306,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,21430273,21495809,21561346,21626882,21692418,21757954,21823491,21889027,21954561,22020099,22085635,22151169,22216705,22282241,22347779,22478849,22544388,22609921,22675459,22806530,22937603,23003138,23068675,23134209,23199745,23265283,23330819,23396354,23461889,23527426,23592963,23658500,23724035,23789569,23855108,23920644,23986179,24051714,24117251,24182788,24248321,24313858,24444929,24510465,24576003,24641539,24707076,24772609,24903681,24969217,25034753,25100289,25165825,25231364],"data":[131073,15269889,23920642,24772609],"defaultauthority":[196609,720901,22151169],"defaultcancelled":[458753,1441797,24707073],"details":[458754,1441793,1507329,6881281,12320769,21823489,24707074],"defaultsuccess":[458753,1507333,24707073],"dll":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361],"dispose":[1769473,1835009,1900545,1966081,2686977,4653063,4915207,5111815,5308423,21561345,21626881,21692417,21757953,22937601],"determines":[1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4456449,21561345,21626881,21692417,21757953,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,25231361],"directly":[1769473,1966081,4718593,5373953,21561345,21757953],"deadline":[2097153,2228226,5898247,6029321,6553610,6684681,7012353,12320769,14024706,14286849,15400962,16973830,17956865,19857414,21889027,22020098,22544385,22609921,24051714,24772610],"duplex":[2162690,6160386,21954562],"different":[2228225,6684673,22020097],"defined":[2686979,2818049,2883585,15269889,22937603,23068673,23265281,23920641],"debug":[3014658,3080194,7405578,7929864,23396354,23461890],"deserializer":[3145729,8388615,8454149,15007746,18743302,23527425,23592962],"derived":[3473410,23920642],"definitions":[3866628,9961473,10027009,10092545,10158081,12320769,13172740,24313860,24510465],"duplexstreamingservermethod":[3866625,10027014,12320769,13172737,22740997,24313857],"definition":[3997697,6160385,10682369,12320770,15335426,20709377,20774913,21954561,23986178,24248321,24510465],"documentation":[5570561,6684674,7143425,7405570,7471107,7536642,7602177,7667714,7733251,7798786,7929858,7995395,8060930,8126465,8192002,8257539,8323074,8388611,8519682,8585219,8650755,8716289,8781826,8847363,9109505,9175042,9240579,9306114,9371650,9699329,10485761,10682369,11075585,11468803,11534338,11599876,11665411,11730947,11927553,11993089,18874369,19202049,19267585,20447233,20512769,20578305,20643841,23265281,23592961],"datetime":[5898245,6029317,6553605,6684679,16973830,19857414],"defaults":[6029313,6553601,6684673,6750209,6815745,7012353,9699329,10944513,11599873,12189697],"defaultarg":[6029317,6553601,6684673,6750209,6815745,7012354,9699329,10944513,11599873,12189697],"defintion":[6094849,6225921,6291457,6356993],"deserialize":[8454145],"disk":[11010050,13303810,24576002],"detail":[11403270,12320769,15728642,21233670,24707075],"defines":[12320769,22151169],"deserializing":[12320769,23592961],"delegates":[12320769],"delegate":[12320769,22413317,22740997,22872069,24379397,24838149],"destination":[12386305,21430273],"deserialized":[13959169,16842753,21823489],"dispatched":[14745601,15204353,18284545,19333121,23199745,23855105],"describes":[15269889,23920641],"duplexstreaming":[23789569],"differs":[24772609],"deadlineexceeded":[24772609],"delayed":[24772609],"directory":[24772612],"deleted":[24772609],"dataloss":[24772609],"disabled":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_101.json b/doc/ref/csharp/html/fti/FTI_101.json deleted file mode 100644 index f1e9b9f803c..00000000000 --- a/doc/ref/csharp/html/fti/FTI_101.json +++ /dev/null @@ -1 +0,0 @@ -{"events":[131074,23920641],"exposes":[131073,196609,262145,327681,393217,458753,524289,589825,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4456449,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22347777,22544385,22609921,22675457,22806529,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24903681,24969217,25100289,25231361],"exception":[131076,3014660,3080196,3473415,7471123,7733267,7995408,8257552,9633793,12713986,12779522,12845058,12910594,15269903,23396356,23461892,23920671],"enable":[196609,655361,22151169],"end":[196609,1048577,12320769,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151170,22347777,22544385,22609921,22675457,22806529,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658498,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24772609,24903681,24969217,25034753,25100289,25231361],"empty":[327681,458754,1310725,1441793,1507329,3604481,9764865,23658497,24051713,24707074,24772609],"entries":[327681,1310721,12320769,23658498],"eventually":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,21561345,21626881,21692417,21757953],"equals":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,25231361],"equal":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,25231361],"explicitly":[2228226,6553602,12320769,14221313,17825793,22020098,22347777,22609921],"enters":[2228225,6553601,22020097],"error":[2228225,3014660,3080196,6684673,7471116,7536651,7995402,8060937,11862017,12124161,12713989,12845061,15269889,15728641,21299201,22020097,23396356,23461892,23920641,24707073,24772615],"extension":[2686977,2818049,2883585,11468802,11534338,11599874,11665410,12451841,22937601,23068673,23265281,24903681],"entire":[2686978,4259842,11468801,11534337,22937602,24772609,24903682],"executes":[2686977,4259841,11468801,22937601,24903681],"element":[2686977,4259841,11468801,22937601,24903681],"elements":[2686977,2818049,2883585,4259843,11534337,11599879,11665415,13434882,22937601,23068673,23265281,24903683],"enumerable":[2818049,2883585,4259842,11599873,11665409,13434882,23068673,23265281,24903682],"entry":[3276801,3342340,8519689,8781832,8847369,8912899,8978440,9043976,9109510,9175048,9240585,9306120,12320770,12976129,13041670,15138824,18939908,19005443,19070979,19136515,19267592,23658509,23724049],"exceptions":[3473409,23920641],"enumerator":[3932161,3997697,10616833,10747905,24444929,24510465],"encoded":[7340034,11075585,11141121,11272193,13303809,14876674,15663105,18546689,18612225,21168129,23330818,24576001,24641537],"environment":[11010049,13303809,24576001],"extensionattribute":[11468803,11534339,11599875,11665411,24903683],"errormessage":[11862021,12124165],"expensive":[12320769,22020097],"encapsulates":[12320770,22806529,23592961],"encoding":[12320769,15597569,20971521,23330817,24576001],"exchanged":[12320769,23658497],"exposed":[12320769,15400961,20316161,24051713,24182785],"enumerations":[12320769],"enumeration":[12320769,22216706,22282242,22478850,23789570,24772610,25165826],"endpoint":[14090241,15400961,17498113,20054017,22020097,24051713],"encryption":[14352385,15466497,18022401,20381697,22675457,24117249],"exported":[15335425,20774913,23986177],"enforced":[15663105,21037057,24641537],"enum":[22216706,22282242,22478850,23789570,24772610,25165826],"expects":[22282241],"example":[24772611],"errors":[24772613],"expired":[24772609],"expire":[24772609],"entity":[24772610],"exists":[24772609],"execute":[24772609],"exhausting":[24772609],"exhausted":[24772609],"execution":[24772609],"enabled":[24772609],"expected":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_102.json b/doc/ref/csharp/html/fti/FTI_102.json deleted file mode 100644 index b2fe94168d1..00000000000 --- a/doc/ref/csharp/html/fti/FTI_102.json +++ /dev/null @@ -1 +0,0 @@ -{"follow":[1,2818049,7274497,23068673],"following":[131073,196609,262145,327681,393217,458753,524289,589825,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4456449,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400962,15466497,15532033,15597569,15663105,15728641,15794177,20316161,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22347777,22544385,22609921,22675457,22806529,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23855105,23920641,23986177,24051714,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24903681,24969217,25100289,25231361],"fields":[196610,262146,327682,393218,458754,524290,589826,2031617,2097155,5570561,5832705,5898241,5963777,21823489,21889027,22151169,22544385,23658497,24182785,24707073,25100289,25231361],"field":[655362,720898,786434,851970,917506,983042,1048578,1114114,1179650,1245186,1310722,1376258,1441794,1507330,1572866,1638402],"fromaccesstoken":[1703937,4521989,21495809],"fromcredential":[1703937,4587525,21495809],"finished":[1769475,1835011,1900547,1966083,4653057,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5439489,5505025,9764865,21561347,21626883,21692419,21757955],"function":[1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4456449,4521985,4587521,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5373953,5439489,5505025,5570561,5832705,5898241,5963777,6094849,6160385,6225921,6291457,6356993,6553601,6619137,6684673,6881281,7208961,7274497,7602177,8126465,8388609,8454146,8781825,8912897,9109505,9175041,9306113,9699329,9764865,9961473,10027009,10092545,10158081,10223617,10354689,10420225,10485761,10551297,10616833,10747905,10813441,11337729,11468801,11534337,11599873,11665409,11927553,11993089,15007746,18743297,18808833,21561345,21626881,21692417,21757953,22020097,22085633,22347777,22413313,22544385,22609921,22675457,22740993,22806529,23330817,23396353,23592963,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24838145,25231361],"fully":[1835009,1900545,2031617,2097153,4915201,5111809,14745601,15204353,18284545,19333121,21626881,21692417,21823489,21889025,23199745,23855105],"fashion":[2162689,6356993,21954561],"fatalfailure":[2228225,6553601,22020097,22282241],"finalize":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"free":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25165825,25231361],"freeing":[2686977,22937601],"foreachasync":[2686977,4259841,11468808,22937601,24903681],"false":[2818049,4259841,4390916,11599873,11796481,11862017,12058625,12124161,13434881,13500418,13631490,23068673,24903681,25034756],"fortype":[3014657,3080193,7602184,8126470,23396353,23461889],"finishes":[3538946,10420225,10813441,15400962,20185089,20250625,23986178,24051714],"first":[3604481,9764865,11468801,11534337,11599873,11665409,24051713],"finish":[6029313],"formatargs":[7405575,7471111,7536647,7667719,7733255,7798791,7929862,7995398,8060934,8192006,8257542,8323078],"func":[8388624,8454154,11468808,18743302,18808838],"file":[11010049,13303809,15269889,23920641,24576001,24772613],"fails":[11010049,12320769,13303809,23920641,24576001],"forceclientauth":[11272197],"flags":[12189704,12320769,15794178,21364742,25165825,25231362],"factory":[12255233,12320769,21495809,24248321],"functionality":[12320769,12386305,21430274],"files":[12320769,21954561],"format":[14090241,15400961,17498113,20054017,22020097,24051713],"fullname":[14745601,15204353,18284549,19333127,23199745,23855105],"frames":[15269889,23920641],"forceclientauthentication":[15663105,21037061,24641537],"failure":[22282242],"failed_precondition":[24772609],"failedprecondition":[24772609],"failures":[24772609],"flagsattribute":[25165828],"force":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_103.json b/doc/ref/csharp/html/fti/FTI_103.json deleted file mode 100644 index 530a1de8af2..00000000000 --- a/doc/ref/csharp/html/fti/FTI_103.json +++ /dev/null @@ -1 +0,0 @@ -{"grpc":[65537,131074,196610,262146,327682,393218,458754,524291,589826,655365,720901,786437,851973,917509,983045,1048581,1114117,1179653,1245189,1310725,1376261,1441797,1507333,1572870,1638405,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2359298,2424834,2490370,2555906,2621443,2686978,2752514,2818050,2883586,2949122,3014658,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521989,4587525,4653061,4718597,4784133,4849669,4915205,4980741,5046277,5111813,5177349,5242885,5308421,5373957,5439493,5505029,5570568,5636104,5701640,5767177,5832709,5898245,5963782,6029320,6094854,6160390,6225926,6291462,6356998,6422533,6488069,6553605,6619141,6684682,6750214,6815750,6881287,6946822,7012357,7077893,7143433,7208965,7274501,7340037,7405575,7471112,7536647,7602182,7667719,7733256,7798791,7864325,7929863,7995400,8060935,8126470,8192007,8257544,8323079,8388616,8454149,8519690,8585224,8650760,8716294,8781834,8847372,8912901,8978437,9043973,9109510,9175050,9240588,9306122,9371655,9437189,9502728,9568262,9633798,9699336,9764870,9830405,9895942,9961479,10027015,10092551,10158087,10223621,10289157,10354693,10420229,10485768,10551302,10616837,10682376,10747909,10813445,10878981,10944517,11010053,11075590,11141126,11206661,11272197,11337733,11403270,11468812,11534346,11599886,11665420,11730952,11796485,11862021,11927558,11993094,12058629,12124165,12189702,12255237,12320787,12386307,12451844,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221315,14286850,14352386,14417923,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728643,15794178,15859717,15925253,15990789,16056325,16121861,16187397,16252933,16318469,16384005,16449541,16515077,16580613,16646149,16711685,16777221,16842757,16908293,16973829,17039365,17104901,17170437,17235973,17301509,17367045,17432581,17498117,17563653,17629189,17694725,17760261,17825798,17891333,17956869,18022405,18087942,18153477,18219013,18284549,18350085,18415621,18481157,18546693,18612229,18677765,18743301,18808837,18874374,18939909,19005445,19070981,19136517,19202054,19267590,19333125,19398661,19464197,19529733,19595269,19660805,19726341,19791877,19857413,19922949,19988485,20054021,20119557,20185093,20250629,20316165,20381701,20447238,20512774,20578310,20643846,20709381,20774917,20840453,20905989,20971525,21037061,21102597,21168133,21233669,21299206,21364741,21430283,21495815,21561350,21626886,21692422,21757958,21823493,21889029,21954566,22020103,22085640,22151174,22216709,22282247,22347783,22413319,22478854,22544390,22609927,22675463,22741000,22806537,22872071,22937605,23003141,23068677,23134213,23199749,23265286,23330822,23396358,23461893,23527430,23592967,23658503,23724037,23789574,23855110,23920646,23986183,24051718,24117255,24182790,24248326,24313862,24379399,24444934,24510470,24576007,24641543,24707078,24772614,24838150,24903687,24969222,25034758,25100296,25165830,25231366],"goes":[196610,983041,1048577,22151170],"given":[1703937,2228225,2359297,2818049,2883585,4259842,4390914,4521985,6684673,6881281,9568257,9633793,11599873,11665409,11862017,12124161,13107202,13434882,13500417,13631489,21495809,22020097,22347777,23068673,23265281,23920642,24903682,25034754],"googlecredential":[1703937,4587521,21495809],"generic":[1769473,1835009,1900545,1966081,2031617,2686977,2752513,2818049,2883585,3211265,3407873,6094849,6160385,6225921,6291457,6356993,6750209,6815745,6881281,7602177,8126465,8388609,9961473,10027009,10092545,10158081,10944513,11206657,11272193,11468801,11534337,11599878,11665413,11927553,11993089,12320769,13697025,13762561,13828097,13893633,13959169,14483457,14548993,14614529,14811137,15007745,15204353,21561345,21626881,21692417,21757953,21823489,22413313,22740993,22937601,23003137,23068673,23199745,23265281,23592961,23855105,24379393,24838145],"getawaiter":[1769473,1966081,4718597,5373957,21561345,21757953],"gethashcode":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,25231361],"getstatus":[1769473,1835009,1900545,1966081,4784133,4980741,5177349,5439493,21561345,21626881,21692417,21757953],"gets":[1769475,1835011,1900547,1966083,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932162,3997698,4063233,4128769,4194305,4456449,4784129,4849665,4980737,5046273,5177345,5242881,5439489,5505025,10616833,10747905,11010049,13303809,13959172,14090241,14155780,14417921,14680065,14745604,15007746,15138819,15204358,15269896,15728642,15794177,16646145,16711681,16777217,16842753,17235969,17301505,17367041,17432577,17563649,18087937,18219009,18284545,18350081,18415617,18481153,18743297,18808833,19005441,19070977,19136513,19333121,19398657,19464193,19529729,19595265,19660801,21233665,21299201,21364737,21561347,21626883,21692419,21757955,21823493,21889025,22020098,22085637,22347777,22544385,22609921,22675457,22806530,23134209,23199748,23330817,23396353,23592963,23658497,23724036,23855111,23920649,23986177,24051713,24117249,24182785,24248321,24313857,24444930,24510466,24576002,24641537,24707075,25231362],"gettrailers":[1769473,1835009,1900545,1966081,4849669,5046277,5242885,5505029,21561345,21626881,21692417,21757953],"gettype":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,25231361],"garbage":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"grpcenvironment":[2621443,7143427,12320769,14417923,18087938,22806535],"getenumerator":[3276801,3932161,3997697,9109512,10616839,10747911,23658497,24444929,24510465],"getbaseexception":[3473409,23920641],"getobjectdata":[3473409,23920641],"grpc_default_ssl_roots_file_path":[11010049,13303809,24576001],"guide":[11468801,11534337,11599873,11665409],"google":[12255233,21430273],"generated":[12320770,21954562],"general":[12320769,22020097],"grpc_channel_args":[12320769,22085633],"grpc_connectivity_state":[12320769,22282241],"grpc_compression_level":[12320769,22478849],"grpc_status_code":[12320769,24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_104.json b/doc/ref/csharp/html/fti/FTI_104.json deleted file mode 100644 index 4013bb0433e..00000000000 --- a/doc/ref/csharp/html/fti/FTI_104.json +++ /dev/null @@ -1 +0,0 @@ -{"http2initialsequencenumber":[196609,786437,22151169],"http2":[196610,786433,851969,22151170],"headers":[327681,1245185,2097153,3604482,5963783,6029320,9764868,12320771,13697025,13762561,13828097,13893633,14024706,15990785,16121857,16252929,16449537,17039366,21561345,21626881,21692417,21757953,21889027,22872065,23658499,24051714],"hash":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,25231361],"handlers":[3997697,10682369,12320771,22609921,23265281,24248321,24510465],"headerinterceptor":[4521989,4587525,12320769,14221313,17760268,22347777,22872069],"header":[4521985,4587521,14221313,17760257,22347777],"host":[5701639,5767174,6750209,6815751,9895942,10551302,12648450,13959170,14221315,15400962,15532033,16580614,17825799,19922950,20578311,21823490,22020098,22347779,24051714,24182785],"holding":[9043969,13041665,23724033],"handler":[9961478,10027014,10092550,10158086,12320773,22413313,22740993,23658497,24379393,24838145],"helper":[12320769,21954561],"hosts":[14221313,17825793,22347777],"helplink":[15269889,23920641],"help":[15269889,23920641],"hresult":[15269890,23920642],"hierarchy":[21495809,21561345,21626881,21692417,21757953,21954561,22020097,22085633,22151169,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23527425,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24903681,24969217,25034753,25100289,25231361],"high":[22478850],"hint":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_105.json b/doc/ref/csharp/html/fti/FTI_105.json deleted file mode 100644 index a31687940f0..00000000000 --- a/doc/ref/csharp/html/fti/FTI_105.json +++ /dev/null @@ -1 +0,0 @@ -{"inherited":[131073,1769476,1835012,1900548,1966084,2031620,2097156,2228230,2293764,2359302,2424838,2490374,2555910,2621446,2686978,2818049,2883585,2949124,3014662,3211270,3276804,3342339,3407878,3473416,3538950,3604486,3670022,3735558,3801094,3866630,3932166,3997702,4063236,4128774,4194307,4456454,14483457,14614529,14811137,15269896,21561348,21626884,21692420,21757956,21823492,21889028,22020102,22085636,22347782,22544390,22609926,22675462,22806534,22937603,23068674,23265282,23330820,23396358,23592966,23658500,23724035,23855110,23920657,23986182,24051718,24117254,24182790,24248326,24313862,24444934,24510470,24576004,24641542,24707075,25231366],"initial":[196609,786433,15400961,20119553,22151169,24051713],"incoming":[196609,851969,22151169],"instance":[327681,1310721,1769473,1835009,1900545,1966081,2031621,2097159,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342339,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194307,4456449,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6946817,7077889,8978433,9043969,9437185,9502721,9830401,9961473,10027009,10092545,10158081,10289153,11403265,11468802,11534338,11599874,11665410,12189697,12517379,13041666,14352385,15269889,15466497,18022401,20381697,21561345,21626881,21692417,21757953,21823496,21889032,22020097,22085633,22347778,22544385,22609921,22675459,22806529,23330817,23396353,23592961,23658499,23724037,23855106,23920642,23986177,24051713,24117251,24182785,24248321,24313858,24444929,24510465,24576001,24641537,24707076,25231362],"initonly":[1179649,1310721,1441793,1507329,1638401],"int":[1376259,6422531,6815747,8847364,9175044,9240580,9371652,9895939,10485763,10551302,11730950,17235972,18874373,19267588,20447236,20643844],"integer":[1376257,6422531,6815745,8847361,9175041,9240577,9371649,9895937,10485761,10551298,11730946,12582913,14155777,17235970,18874369,19267585,20447233,20643841,22085634,22216706],"int32":[1376257,3932161,6422530,6815746,8847365,9175041,9240581,9371652,9895937,10485762,10551300,11730952,12582913,12648449,13238273,17235969,18874369,19267587,20447233,20643841,22020097,22085633,24444929],"interceptor":[1703938,4521986,4587522,12320769,14221314,17760258,21495810,22347778,22872065],"implements":[1703937,4587521,4653057,4915201,5111809,5308417,7405569,7471105,7536641,7602177,7667713,7733249,7798785,8519681,8716289,8781825,8847361,9109505,9175041,9240577,9306113,9371649,10616833,10747905,18874369,19202049,19267585,19333121,19398657,19595265,19660801,21495809,21561345,21626881,21692417,21757953,23396353,23658497,23855105,24444929,24510465],"itokenaccess":[1703937,4587526,21495809],"invalidoperationexception":[1769474,1835010,1900546,1966082,4390914,4784129,4849665,4980737,5046273,5177345,5242881,5439489,5505025,12058625,12124161,13631490,21561346,21626882,21692418,21757954,25034754],"indicates":[2031617,2097153,3342337,4194305,6553601,15728641,21299201,21823489,21889025,23724033,24707074,24772609],"invokes":[2162693,6094849,6160385,6225921,6291457,6356993,21954565],"independent":[2162689,6160385,21954561],"implicitly":[2228225,3604481,6553601,9764865,22020097,24051713],"iasyncstreamreader":[2686979,11468809,11534344,12320769,14483459,16187398,16318470,22413317,22740997,22937606],"idisposable":[2686977,4653057,4915201,5111809,5308417,21561348,21626884,21692420,21757956,22937605],"iasyncenumerator":[2686977,14483457,22937606],"interface":[2686977,2752513,2818049,2883585,3080193,7208961,7274497,7929857,7995393,8060929,8126465,8192001,8257537,8323073,12320769,12386305,12845057,12910593,14483457,14548993,14614529,14680065,14745601,14811137,18153473,18219009,18284545,18350081,18415617,18481153,21561345,21626881,21692417,21757953,22937607,23003141,23068678,23134213,23199749,23265286,23396353,23461893,23658500,23855105,24444930,24510466],"iasyncstreamwriter":[2752515,2818049,2883585,7208962,12320769,14548995,14614529,14811137,18153474,23003142,23068678,23265286],"iclientstreamwriter":[2818051,4259841,7274498,11599883,12320769,13434881,14614531,15859718,16056326,23068678,24903681],"iserverstreamwriter":[2883587,4259841,11665418,12320769,13434881,14811139,15400961,20316161,22740997,23265287,24051713,24379397,24903681],"info":[3014658,3080194,7667722,8192008,12320769,23396354,23461890,25100289],"ilogger":[3080195,7143430,7405569,7471105,7536641,7602183,7667713,7733249,7798785,7929860,7995397,8060932,8126472,8192004,8257541,8323076,12386305,12845058,12910594,18087942,23396356,23461894],"indexof":[3276801,9175049,23658497],"insert":[3276801,9240586,23658497],"information":[3473409,11468801,11534337,11599873,11665409,15269889,23920642,24772609],"invoked":[3604482,9764866,12320769,14221313,17760257,21823489,22347777,24051714],"immutable":[3866625,10223617,24313857],"ienumerable":[4259842,6750214,6815750,9109505,10616833,10747905,10944517,11206662,11272198,11599882,11665417,12648450,13369346,13434882,22020098,23658504,24444936,24510472,24641538,24903682],"initializes":[5636097,5701633,5767169,6946817,7077889,8454145,8978433,9043969,9437185,9502721,9830401,12189697,12517379,13041666,21823491,22347777,22675457,23592961,23658497,23724034,23855105,24117249,25231361],"intvalue":[6422533,14155777,17235973,22085633],"invoke":[6881281],"invocation":[6881281,6946817],"item":[8519687,8781831,9175047,9240583,9306119,15073281,19267590,23658497],"icollection":[8519681,8716289,8781825,8847361,9306113,18874369,19202049,23658500],"indicating":[8978433,9043969],"ienumerator":[9109510,10616838,10747910],"ilist":[9175041,9240577,9371649,19267585,21102598,23658500],"index":[9240583,9371655,19267590],"interceptors":[12255234,21495810],"inherit":[12255233,21495809,23920641,24576001,24641537],"indirectly":[12320769,21954561],"invoking":[12320769,22020097],"initialization":[12320769,22806529],"interfaces":[12320769,12386305],"ihaswriteoptions":[12320769,14680067,18219010,23134214],"imethod":[12320769,14745603,18284546,18350082,18415618,18481154,19333121,19398657,19595265,19660801,22872069,23199750,23855108],"ispropagatecancellation":[14286849,17891333,22544385],"ispropagatedeadline":[14286849,17956869,22544385],"insecure":[14352385,15466497,18022405,20381701,22675457,24117249],"isreadonly":[15073281,19202056,23658497],"isbinary":[15138817,18939909,23724033],"innerexception":[15269889,23920641],"immediate":[15269889,23920641],"indicate":[15728641,21299201,24707073],"inheritance":[21495809,21561345,21626881,21692417,21757953,21954561,22020097,22085633,22151169,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23527425,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24903681,24969217,25034753,25100289,25231361],"idle":[22282242],"inherits":[22937601,23068673,23265281,23920641,24576001,24641537],"invalidargument":[24772609],"invalid":[24772609],"invalid_argument":[24772609],"instead":[24772610],"identified":[24772609],"issue":[24772609],"implemented":[24772609],"internal":[24772610],"invariants":[24772609],"immediately":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_107.json b/doc/ref/csharp/html/fti/FTI_107.json deleted file mode 100644 index 6ce520d7967..00000000000 --- a/doc/ref/csharp/html/fti/FTI_107.json +++ /dev/null @@ -1 +0,0 @@ -{"keycertificatepair":[2949123,7340037,11141131,11206662,11272198,12320769,13303809,13369346,14876675,15597569,18546690,18612226,20905995,21102598,23330824,24576002,24641538],"killasync":[3538945,10420229,23986177],"key":[7340034,8585222,8650758,8978438,9043974,11141121,11206657,11272193,12320769,14876673,15138818,15269889,15597570,15663105,18612225,19005446,20905986,21102593,23330819,23724034,23920641,24576002,24641537],"known":[11010049,13303809,24576001,24772609],"keycertificatepairs":[11206661,11272197,15663105,21102597,24641537]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_108.json b/doc/ref/csharp/html/fti/FTI_108.json deleted file mode 100644 index 0e8d26a2391..00000000000 --- a/doc/ref/csharp/html/fti/FTI_108.json +++ /dev/null @@ -1 +0,0 @@ -{"link":[1,15269889,23920641],"length":[196609,917505,22151169],"listening":[393217,1376257,3932162,9895937,10485761,10551297,13238274,24182785,24444930],"literal":[655361,720897,786433,851969,917505,983041,1048577,1114113,1245185,1376257,1572865],"lastobservedstate":[2228225,6684679,22020097],"logger":[2621441,3014657,3080193,7143425,7602177,7864321,8126465,12386305,14417922,18087943,22806531,23396355,23461889],"list":[2686977,4259841,11534342,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,22937601,24903681],"logs":[3014662,3080198,7405569,7471105,7536641,7667713,7733249,7798785,7929857,7995393,8060929,8192001,8257537,8323073,12386306,12713986,12779522,12845058,12910594,21430273,23396359,23461894],"logging":[3014657,3080193,7143426,7405572,7471109,7536644,7602179,7667716,7733253,7798788,7864322,7929860,7995397,8060932,8126467,8192004,8257541,8323076,12386306,12713985,12779521,12845057,12910593,21430273,23396355,23461891],"listen":[3932162,9895937,10485761,10551297,12320769,13238274,15335425,20709377,23986178,24182785,24444930],"let":[6029317,6553601,6684673,6750209,6815745,7012354,9699329,10944513,11599873,12189697,20447233],"loaded":[11010049,13303809,24576001],"lightweight":[12255233,21430273],"library":[12255233,12320769,21430273,22806529],"logic":[12320770,21430273,23592961],"long":[12320769,22020097,24772609],"lived":[12320769,22020097],"like":[12320770,22609922,24772609],"layer":[12320770,22609922],"level":[12320769,22478849],"low":[22478850],"likely":[24772609],"loss":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_109.json b/doc/ref/csharp/html/fti/FTI_109.json deleted file mode 100644 index 7071213861b..00000000000 --- a/doc/ref/csharp/html/fti/FTI_109.json +++ /dev/null @@ -1 +0,0 @@ -{"members":[131073,196609,262145,327681,393217,458753,524289,589825,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4456449,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22478849,22544385,22609921,22675457,22806529,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24772609,24903681,24969217,25100289,25165825,25231361],"maxconcurrentstreams":[196609,851973,22151169],"maximum":[196610,851969,917505,22151170],"maxmessagelength":[196609,917509,22151169],"message":[196609,458754,917505,1441793,1507329,3014662,3080198,3604481,4390914,6094849,6225922,6291459,6356995,6881282,7208966,7405576,7471112,7536648,7667720,7733256,7798792,7929863,7995399,8060935,8192007,8257543,8323079,9633799,9764865,9961474,10027010,10092546,10158082,11862018,12124162,12713986,12779522,12845058,12910594,13107201,13500417,13631489,15269890,21561346,21626882,21692417,21757953,21823490,22151169,22413314,22740994,22937601,23003137,23068673,23396358,23461894,23855106,23920643,24051713,24379394,24707074,24838146,25034754,25165825],"metadata":[196610,327684,983041,1048577,1245186,1310728,1769473,1835009,1900545,1966081,3276804,3342339,4849670,5046278,5242886,5505030,5963781,6029317,8519693,8585221,8650757,8716291,8781836,8847374,8912899,8978438,9043974,9109513,9175052,9240590,9306124,9371652,9437190,9764869,12320773,12976131,13041669,14221313,15073283,15138821,15400961,15990790,16121862,16252934,16449542,17039366,17760257,18874371,18939906,19005443,19070979,19136515,19202051,19267595,20119559,20185094,21561345,21626881,21692417,21757953,22151170,22347777,22872074,23658521,23724043,24051713],"mutable":[655361,720897,786433,851969,917505,983041,1048577,1114113,1245185,1376257,1572865],"methods":[1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2359298,2424834,2490370,2555906,2621442,2686979,2752514,2818051,2883587,2949122,3014658,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,11468802,11534338,11599874,11665410,12255233,12320769,12451843,14745601,15204353,18284545,19333121,21495810,21561345,21626881,21692417,21757953,21823489,21889025,21954562,22020097,22085633,22347777,22544385,22609921,22675457,22806529,22937602,23003137,23068674,23199745,23265282,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23855106,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24903682,24969218,25034754,25231361],"means":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,6029313,21561345,21626881,21692417,21757953,24772609],"messages":[2162689,3604481,6094849,6160387,6225921,8454146,9502722,9764865,12320775,12386305,15204354,19464193,19529729,21954561,22937601,23003137,23068673,23265281,23461889,23592961,23658498,23855106,24051713],"memberwiseclone":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"method":[2359297,3407875,3604481,3866632,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636108,5701645,5767175,5832705,5898241,5963777,6094849,6160385,6225921,6291457,6356993,6553601,6619137,6684673,6881293,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8519681,8585217,8650753,8716289,8781825,8847361,8912897,9109505,9175041,9240577,9306113,9371649,9502729,9699329,9764866,9961487,10027023,10092559,10158095,10223617,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,11337729,11468805,11534341,11599877,11665413,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12320774,12517378,12713985,12779521,12845057,12910593,12976129,13172745,13238273,13434881,13500417,13565953,13631489,13959170,14745604,15204359,15269889,15400962,16646150,18284545,18350081,18415617,18481153,19333123,19398659,19464194,19529730,19595267,19660803,19988486,21823492,22347777,22413314,22740994,22872069,23199749,23789569,23855120,23920641,24051715,24248322,24313864,24379394,24838146],"movenext":[2686977,22937601],"marshallers":[3145731,8388613,12320770,14942211,18677762,23527432],"marshaller":[3145729,3211267,5767182,8388614,8454150,9502732,12320769,12517378,13959170,14942209,15007747,15204354,16777223,16842759,18677767,18743298,18808834,19464199,19529735,21823492,23527426,23592970,23855106],"member":[4521985,4587521,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5373953,5439489,5505025,5570561,5832705,5898241,5963777,6094849,6160385,6225921,6291457,6356993,6553601,6619137,6684673,6881281,7143425,8388609,8585217,8650753,9699329,9764865,9961473,10027009,10092545,10158081,10223617,10354689,10420225,10485761,10551297,10682369,10813441,10878977,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18546689,18612225,18677761,18743297,18808833,18939905,19005441,19070977,19136513,19464193,19529729,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,22216705,22282241,22478849,23789569,24772609,25165825],"missing":[5570561,6684674,7143425,7405570,7471107,7536642,7602177,7667714,7733251,7798786,7929858,7995395,8060930,8126465,8192002,8257539,8323074,8388611,8519682,8585219,8650755,8716289,8781826,8847363,9109505,9175042,9240579,9306114,9371650,9699329,10485761,10682369,11075585,11468803,11534338,11599876,11665411,11730947,11927553,11993089,18874369,19202049,19267585,20447233,20512769,20578305,20643841,23265281,23592961],"methodtype":[9502725,12320769,18481158,19660807,23789573],"main":[12320769,21430273],"make":[12320769,21954561],"making":[12320770,21954561,22609921],"makes":[12320769,22609921],"mapping":[12320769,24248321],"microbenchmarks":[12451841,24969217],"multiple":[14221313,17825793,22347777],"meaning":[14221313,17825793,22347777],"maintains":[14548993,14614529,14811137,18153473,23003137,23068673,23265281],"mustinherit":[22347777,22675457,24117249],"medium":[22478850],"malformed":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_110.json b/doc/ref/csharp/html/fti/FTI_110.json deleted file mode 100644 index 4df2bf7fdeb..00000000000 --- a/doc/ref/csharp/html/fti/FTI_110.json +++ /dev/null @@ -1 +0,0 @@ -{"namespace":[131073,196609,262145,327681,393217,458753,524289,589825,655362,720898,786434,851970,917506,983042,1048578,1114114,1179650,1245186,1310722,1376258,1441794,1507330,1572866,1638402,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521986,4587522,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5111810,5177346,5242882,5308418,5373954,5439490,5505026,5570562,5636098,5701634,5767170,5832706,5898242,5963778,6029314,6094850,6160386,6225922,6291458,6356994,6422530,6488066,6553602,6619138,6684674,6750210,6815746,6881282,6946818,7012354,7077890,7143426,7208962,7274498,7340034,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7864322,7929858,7995394,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8716290,8781826,8847362,8912898,8978434,9043970,9109506,9175042,9240578,9306114,9371650,9437186,9502722,9568258,9633794,9699330,9764866,9830402,9895938,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11010050,11075586,11141122,11206658,11272194,11337730,11403266,11468802,11534338,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255233,12320770,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16449538,16515074,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,22937602,23003138,23068674,23134210,23199746,23265282,23330818,23396354,23461890,23527426,23592962,23658498,23724034,23789570,23855106,23920642,23986178,24051714,24117250,24182786,24248322,24313858,24379394,24444930,24510466,24576002,24641538,24707074,24772610,24838146,24903682,24969218,25034754,25100290,25165826,25231362],"number":[196610,786433,851969,12320769,22151170,23789569,23986177],"normally":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,12320769,21561345,21626881,21692417,21757953,24248321],"new":[2031617,2097155,2228225,2359297,3801089,3932162,5570561,5636099,5701635,5767171,5832705,5898241,5963777,6029315,6422530,6488066,6553601,6750210,6815746,6881281,6946819,7012355,7077891,7340035,7864322,8454147,8978435,9043971,9437187,9502723,9568259,9633795,9830403,9895939,10289155,10354689,10485761,10551297,10944515,11010050,11075586,11141122,11206658,11272194,11403267,12189699,12517379,13041666,13107202,13238274,14221313,17760257,21823492,21889028,22020097,22347779,22544385,22675457,23330817,23592961,23658497,23724034,23855105,23920642,23986177,24117249,24182785,24248321,24313857,24444930,24707073,25231361],"need":[2228225,6553601,22020097,25165826],"needs":[3604481,8978433,9764865,24051713],"null":[4390914,5701633,6029323,6553603,6684674,6750210,6815746,7208961,9699330,10944514,11927553,11993089,13565954,14221313,14548993,14614529,14811137,15597569,17825793,18153473,20905985,22347777,23003137,23068673,23265281,24576001,25034754],"nullable":[6029317,6553605,6684679,16973830],"nullptr":[6029317,6553601,6684673,6750209,6815745,9699329,10944513],"names":[12320770,22151169,24248321],"native":[12320769,22609921],"numerical":[15269889,23920641],"namespaces":[21430274],"notinheritable":[21495809,21561345,21626881,21692417,21757953,21954561,22085633,22151169,23330817,23527425,23658497,24576001,24903681,24969217,25034753,25100289],"notfound":[24772609],"nocompress":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_111.json b/doc/ref/csharp/html/fti/FTI_111.json deleted file mode 100644 index 7777fcea47a..00000000000 --- a/doc/ref/csharp/html/fti/FTI_111.json +++ /dev/null @@ -1 +0,0 @@ -{"occurs":[131073,2228225,6684673,22020097,23920641],"object":[131073,1769480,1835015,1900551,1966088,2031618,2097154,2228235,2293767,2359307,2424843,2490379,2555915,2621451,2949127,3014671,3080196,3211275,3276807,3342338,3407883,3473416,3538955,3604491,3670027,3735563,3801100,3866635,3932171,3997707,4063239,4128779,4194306,4456459,4718593,5373953,6094849,6160385,6225921,6291457,7405577,7471115,7536650,7667721,7733259,7798794,7929863,7995401,8060936,8192007,8257545,8323080,10223617,10354690,11468801,11534337,11599873,11665409,12320769,12713986,12779522,12845058,12910594,15269889,21495809,21561353,21626888,21692424,21757961,21823490,21889026,21954562,22020108,22085640,22151169,22347788,22544396,22609932,22675468,22806540,23330824,23396368,23461892,23527425,23592972,23658504,23724034,23855116,23920651,23986188,24051724,24117260,24182796,24248333,24313868,24444940,24510476,24576008,24641548,24707074,24903681,24969217,25034753,25100289,25231372],"override":[196609,1114113,4653057,4915201,5111809,5308417,7405569,7471105,7536641,7602177,7667713,7733249,7798785,8519681,8716289,8781825,8847361,8912899,9109505,9175041,9240577,9306113,9371649,10616833,10747905,11337731,18874369,19202049,19267585,19333121,19398657,19595265,19660801,22151169],"options":[262145,589825,1179649,1638401,2031617,5570567,5636102,5701638,5767174,6029313,6750216,6815752,6881286,7012353,9699336,10944520,12320773,13959170,14024705,14548994,14614530,14680065,14811138,15400961,16711686,17170433,18153474,18219009,20316161,21823491,21889026,22151169,22544387,23003138,23068674,23134210,23265282,24051713,25231362],"oauth2":[1703937,4521986,12255233,21430273,21495809],"obtain":[1703937,4587522,21495809],"operations":[1769473,1835009,1900545,1966081,2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,4653057,4915201,5111809,5308417,12320770,21561345,21626881,21692417,21757953,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,24772609,25165825,25231362],"one":[2752513,2818049,2883585,3473409,7208961,12320769,23003137,23068673,23265281,23920641,23986177,24772609],"overrides":[3342337,4194305,8912897,11337729,23724033,24707073],"overridden":[3473410,23920642],"overload":[5636097,5701633,5767169,6422529,6488065,6750209,6815745,7471105,7536641,7733249,7798785,7995393,8060929,8257537,8323073,8519681,8585217,8650753,8978433,9043969,9568257,9633793,9961473,10027009,10092545,10158081,10485761,10551297,11010049,11075585,11141121,11206657,11272193,11599873,11665409,11796481,11862017,11927553,11993089,12058625,12124161,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489],"optional":[6029322,6553602,6684674,6750210,6815746,7012356,9699330,10944514,11599874,12189698,12320769,24707073],"obtained":[6029313],"option":[6422529,6488065,12320769,12582914,22085635,22216706],"omit":[11468801,11534337,11599873,11665409],"objects":[12320771,22020097,23134209,24248321],"operation":[12320769,22020097,24772618],"optiontype":[12320769,17432582,22216709],"original":[14090241,17629185,22020097],"operatio":[24772609],"outofrange":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_112.json b/doc/ref/csharp/html/fti/FTI_112.json deleted file mode 100644 index fef4b54db71..00000000000 --- a/doc/ref/csharp/html/fti/FTI_112.json +++ /dev/null @@ -1 +0,0 @@ -{"primaryuseragentstring":[196609,983045,22151169],"primary":[196609,983041,22151169],"propagation":[262145,1179649,3604481,6029313,7012353,9699329,22544386,24051713],"pickunused":[393217,1376261,20447233,24182785],"pass":[393217,1376257,24182785],"port":[393219,1376259,3932164,6750209,6815751,9895946,10485762,10551306,12320769,12648450,13238276,15335425,15466497,15532033,20381697,20447234,20643847,20709377,22020098,23986177,24117249,24182790,24444932],"ports":[393217,1376257,12320770,15335426,20709382,23986179,24182785,24444929],"property":[393217,1376257,14221313,14548993,14614529,14811137,15400961,15859716,15925252,15990788,16056324,16121860,16187396,16252932,16318468,16384004,16449540,16515076,16580612,16646148,16711684,16777220,16842756,16908292,16973828,17039364,17104900,17170436,17235972,17301508,17367044,17432580,17498116,17563652,17629188,17694724,17760260,17825797,17891332,17956868,18022404,18087940,18153477,18219012,18284548,18350084,18415620,18481156,18546692,18612228,18677764,18743300,18808836,18874372,18939908,19005444,19070980,19136516,19202052,19267588,19333124,19398660,19464196,19529732,19595268,19660804,19726340,19791876,19857412,19922948,19988484,20054020,20119556,20185092,20250628,20316165,20381700,20447236,20512772,20578308,20643844,20709380,20774916,20840452,20905988,20971524,21037060,21102596,21168132,21233668,21299204,21364740,22347777,23003137,23068673,23265281,24051713,24182785],"public":[655363,720899,786435,851971,917507,983043,1048579,1114115,1179651,1245187,1310723,1376259,1441795,1507331,1572867,1638403,4521987,4587523,4653059,4718595,4784131,4849667,4915203,4980739,5046275,5111811,5177347,5242883,5308419,5373955,5439491,5505027,5570563,5636099,5701635,5767171,5832707,5898243,5963779,6029315,6094851,6160387,6225923,6291459,6356995,6422531,6488067,6553603,6619139,6684675,6750211,6815747,6946819,7012355,7143427,7340035,7405571,7471107,7536643,7602179,7667715,7733251,7798787,7864323,8388611,8454147,8519683,8585219,8650755,8716291,8781827,8847363,8912899,8978435,9043971,9109507,9175043,9240579,9306115,9371651,9437187,9502723,9568259,9633795,9699331,9764867,9895939,9961475,10027011,10092547,10158083,10223619,10289155,10354691,10420227,10485763,10551299,10616835,10682371,10747907,10813443,10878979,10944515,11010051,11075587,11141123,11206659,11272195,11337731,11403267,11468803,11534339,11599875,11665411,11730947,11796483,11862019,11927555,11993091,12058627,12124163,12189699,15859715,15925251,15990787,16056323,16121859,16187395,16252931,16318467,16384003,16449539,16515075,16580611,16646147,16711683,16777219,16842755,16908291,16973827,17039363,17104899,17170435,17235971,17301507,17367043,17432579,17498115,17563651,17629187,17694723,17760259,17825795,17891331,17956867,18022403,18087939,18546691,18612227,18677763,18743299,18808835,18874371,18939907,19005443,19070979,19136515,19202051,19267587,19333123,19398659,19464195,19529731,19595267,19660803,19726339,19791875,19857411,19922947,19988483,20054019,20119555,20185091,20250627,20316163,20381699,20447235,20512771,20578307,20643843,20709379,20774915,20840451,20905987,20971523,21037059,21102595,21168131,21233667,21299203,21364739,21495811,21561347,21626883,21692419,21757955,21823491,21889027,21954563,22020099,22085635,22151171,22216707,22282243,22347779,22413315,22478851,22544387,22609923,22675459,22740995,22806531,22872067,22937603,23003139,23068675,23134211,23199747,23265283,23330819,23396355,23461891,23527427,23592963,23658499,23724035,23789571,23855107,23920644,23986179,24051715,24117251,24182787,24248323,24313859,24379395,24444931,24510467,24576004,24641540,24707075,24772611,24838147,24903683,24969219,25034755,25100291,25165827,25231363],"provides":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,12255233,12320770,12386305,14352385,15466497,18022401,20381697,21430274,21561345,21626881,21692417,21757953,22609921,22675457,24117249,25100289],"pending":[1769473,1835009,1900545,1966081,2752513,2818050,2883585,4653057,4915201,5111809,5308417,7208961,7274497,21561345,21626881,21692417,21757953,23003137,23068674,23265281],"provided":[2031617,2097155,5570561,5832705,5898241,5963777,21823489,21889027],"preserved":[2031617,2097155,5570561,5832705,5898241,5963777,21823489,21889027],"perform":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"performs":[2686977,22937601],"progress":[3538945,10420225,23986177],"procedure":[3538946,10420225,10813441,12320770,23920641,23986178,24772609],"propagate":[3604481,9699329,12320769,22609921,24051713],"preceded":[4325377,11730945,24969217],"phase":[4325377,11730945,24969217],"preconditions":[4390914,11796482,11862018,11927555,11993091,12058626,12124162,12451842,13500418,13565954,13631490,25034759],"parameters":[4521985,4587521,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094850,6160386,6225922,6291458,6356994,6422529,6488065,6553601,6684673,6750209,6815745,6881282,6946817,7012353,7143425,7208961,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388610,8454145,8519681,8585217,8650753,8781825,8847361,8978433,9043969,9175041,9240577,9306113,9371649,9502721,9568257,9633793,9699329,9764865,9895937,9961474,10027010,10092546,10158082,10289153,10354689,10485761,10551297,10682369,10944513,11075585,11141121,11206657,11272193,11403265,11468802,11534338,11599874,11665410,11730945,11796481,11862017,11927554,11993090,12058625,12124161,12189697,19267585,21561345,21626881,21692417,21757953,21823489,22413314,22740994,22872065,22937601,23003137,23068673,23265281,23592961,23855105,24379394,24838146],"param":[5570561,6684674,7143425,7405570,7471107,7536642,7667714,7733251,7798786,7929858,7995395,8060930,8192002,8257539,8323074,8388610,8519681,8585218,8650754,8781825,8847362,9175041,9240578,9306113,9371649,9699329,10485761,10682369,11075585,11468802,11534337,11599875,11665410,11730947],"propagationtoken":[6029319,14024705,17104901,21889025],"providing":[6094849,6160385,6225921,6291457],"protected":[6881283,7077891,9830403],"propagatedeadline":[7012359],"propagatecancellation":[7012359],"parent":[7012354,14024705,14286850,17104897,17891329,17956865,21889025,22544386],"propagated":[7012354,14286850,17891329,17956865,22544386],"private":[7340034,14876673,18612225,23330818],"pair":[7340033,11141121,12320769,15597570,20905986,23330818,24576002],"privatekey":[7340037,14876673,18612229,23330817],"pem":[7340034,11075585,11141121,11272193,12320769,13303809,14876674,15597569,15663105,18546689,18612225,20971521,21168129,23330819,24576002,24641537],"params":[7405569,7471105,7536641,7667713,7733249,7798785,7929857,7995393,8060929,8192001,8257537,8323073],"paramarray":[7405569,7471105,7536641,7667713,7733249,7798785,7929857,7995393,8060929,8192001,8257537,8323073],"pointed":[11010049,13303809,24576001],"place":[11010049,13303809,24576001],"proves":[11272193],"parameter":[11468801,11534337,11599873,11665409,11993089],"programming":[11468801,11534337,11599873,11665409],"paramname":[11993093],"protocol":[12320770,21954561,24248321],"possible":[12320769,22020097],"propagating":[12320770,14024705,17104897,21889025,22609922],"properties":[12320769,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400963,15466498,15532034,15597570,15663106,15728642,15794178,20316161,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23527425,23592961,23658497,23724033,23855105,23920641,23986177,24051714,24117249,24182785,24576001,24641537,24707073,25231361],"part":[12320769,24248321],"pairs":[15269889,15663105,21102593,23920641,24641537],"provide":[15269889,23920641],"peer":[15400961,20054021,24051713],"pick":[20447233],"problematic":[24772609],"permissiondenied":[24772609],"permission":[24772609],"permission_denied":[24772610],"past":[24772610],"particular":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_113.json b/doc/ref/csharp/html/fti/FTI_113.json deleted file mode 100644 index 0a336d9f2d2..00000000000 --- a/doc/ref/csharp/html/fti/FTI_113.json +++ /dev/null @@ -1 +0,0 @@ -{"qualified":[2031617,2097153,5767169,14745601,15204353,18284545,19333121,21823489,21889025,23199745,23855105],"quota":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_114.json b/doc/ref/csharp/html/fti/FTI_114.json deleted file mode 100644 index b2f9e361e1e..00000000000 --- a/doc/ref/csharp/html/fti/FTI_114.json +++ /dev/null @@ -1 +0,0 @@ -{"redirected":[1],"rpcexception":[131075,3473411,9568263,9633799,12320770,13107206,15269891,19726338,23920652],"reference":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390915,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927560,11993096,12058625,12124161,12189697,12320769,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565955,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034755,25100289,25165825,25231361],"receive":[196609,917505,22151169],"read":[327681,1310721,1835009,1900545,2686977,4259841,4915201,5111809,11534337,12320769,13762561,13828097,16187393,16318465,21626882,21692418,22937602,23658497,24903681],"result":[458754,1441793,1507329,1769474,1835009,1900545,1966082,4653058,4915201,5111809,5308418,12320770,13697025,13893633,14352385,15466497,15925249,16384001,18022401,20381697,21561347,21626881,21692417,21757955,22675457,24117249,24707075,24772609],"rpc":[458754,1441793,1507329,2228226,6553602,12320770,15400965,19857409,19922945,19988481,20185089,20250625,21954561,22020098,24051717,24707075],"readonly":[1179650,1310722,1441794,1507330,1638402,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17891329,17956865,18022401,18087937,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737],"request":[1769473,1835009,1966081,2162689,2228225,3866625,4653057,4915201,5308417,5767169,6029313,6094849,6160386,6225923,6291458,6356994,6553601,6881281,9502721,9961473,10027009,10092545,10158082,12320771,13172737,14221313,15204353,17760257,19464193,21561346,21626882,21757954,21823489,21954561,22020097,22347777,22413313,22740993,23658498,23789571,23855106,24313857,24379398,24772609,24838150],"received":[1769473,1966081,4653057,5308417,21561345,21757953,23789571,24772609],"requests":[1769473,1835009,1900545,1966081,2162690,3538946,4653057,4915201,5111809,5308417,6094849,6160385,10420225,10813441,13697025,13762561,13959169,15859713,16056321,16777217,21561346,21626882,21692417,21757953,21823489,21954562,23789569,23986178],"resources":[1769473,1835009,1900545,1966081,2228226,2359297,2424833,2490369,2555905,2621441,2686977,3014657,3211265,3407873,3473409,3538946,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,4653057,4915201,5111809,5308417,6619137,10813441,21561345,21626881,21692417,21757953,22020098,22347777,22544385,22609921,22675457,22806529,22937601,23396353,23592961,23855105,23920641,23986178,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"released":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,21561345,21626881,21692417,21757953],"returns":[1769473,1835009,1900545,1966081,2031619,2097157,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014658,3080193,3211265,3276801,3342338,3407873,3473410,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194306,4456449,5570561,5832705,5898241,5963777,7602177,8126465,8912897,11337729,14352385,14942209,15138817,15466497,18022401,18677761,18939905,20381697,21561345,21626881,21692417,21757953,21823491,21889029,22020097,22085633,22347777,22544385,22609921,22675458,22806529,23330817,23396354,23461889,23527425,23592961,23658497,23724035,23855105,23920642,23986177,24051713,24117250,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707074,25231361],"represents":[1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342337,3407873,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,8912897,11337729,12320770,21561345,21626881,21692417,21757953,22020098,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724033,23855105,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707074,25231361],"response":[1835009,1900545,2162690,3604484,3866625,4915201,5111809,5767169,6094851,6160386,6225922,6291458,6356994,6881281,9502721,9764870,9961473,10027009,10092545,10158082,12320772,13172737,13697025,13762561,13828097,13893633,15204353,15400961,15990785,16121857,16252929,16449537,19529729,20316161,21561346,21626883,21692419,21757955,21823489,21954562,22413313,22740993,23658499,23789570,23855106,24051717,24313857,24379393,24772609,24838145],"responds":[2162691,6094849,6160385,6225921,21954563],"responses":[2162690,6160385,6225921,13762561,13828097,13959169,16187393,16318465,16842753,21626881,21692417,21823489,21954562,23789570],"remote":[2162690,6291457,6356993,6946817,12320777,14090241,15400961,17498113,20054017,21954562,22020099,23199745,23658499,23855105,23920641,24051713,24772609],"requesting":[2228225,6553601,22020097],"returned":[2228227,3538946,6553601,6684674,10420225,10813441,22020099,23986178,24772611],"ready":[2228225,6553601,22020097,22282242],"reached":[2228226,6553601,6684673,22020098],"requires":[2228225,6553601,22020097],"reclaimed":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"releasing":[2686977,22937601],"resetting":[2686977,22937601],"reads":[2686978,4259842,11468801,11534337,22937602,24903682],"remove":[3276801,9306121,23658497],"removeat":[3276801,9371657,23658497],"root":[3473409,11075585,11141121,11206657,11272193,13303809,13369345,15597569,15663105,20971521,21168129,23920641,24576002,24641538],"runtime":[3473409,23920641],"representation":[3473409,12320769,15269889,23199745,23920642],"return":[3932162,4521985,4587521,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5373953,5439489,5505025,5570561,5832705,5898241,5963777,6094849,6160385,6225921,6291457,6356993,6553601,6619137,6684673,6881281,7208961,7274497,7602177,8126465,8388609,8781825,8912897,9109505,9175041,9306113,9699329,9764865,9895937,9961473,10027009,10092545,10158081,10223617,10354689,10420225,10485762,10551298,10616833,10747905,10813441,11337729,11468801,11534337,11599873,11665409,11927553,11993089,12320772,13238274,21561345,21626881,21692417,21757953,22413313,22740993,24379393,24444930,24772609,24838145],"register":[3997697,10682369,14221313,15335426,17760257,20709377,20774913,22347777,23986178,24510465],"runbenchmark":[4325377,11730952,24969217],"runs":[4325377,11730945,24969217],"requestmarshaller":[5767173,9502725,13959169,15204353,16777221,19464197,21823489,23855105],"responsemarshaller":[5767173,9502725,13959169,15204353,16842757,19529733,21823489,23855105],"ref":[6094850,6160386,6225922,6291458,6356994,6881282,9961474,10027010,10092546,10158082,11468801,11534337,11599873,11665409,21495809,21561345,21626881,21692417,21757953,21954561,22020097,22085633,22151169,22347777,22413314,22544385,22609921,22675457,22740994,22806529,23330817,23396353,23527425,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379394,24444929,24510465,24576001,24641537,24838146,24903681,24969217,25034753,25100289,25231361],"reponse":[6160385],"req":[6225925,6291461,6356997],"resulting":[9568257,9633793,12320770,15269889,19726337,23658497,23920642],"responseheaders":[9764869],"roots":[11010049,13303809,24576001],"rootcertificates":[11075590,11141125,11272198,15597569,15663105,20971525,21168133,24576001,24641537],"rejected":[11272193,24772609],"registered":[12255233,21495809],"representing":[12320769,21430273],"reuse":[12320770,22020098],"redirect":[12386305,21430273],"requeststream":[13697025,13762561,15859717,16056325,21561345,21626881,22413317,22740997],"responseasync":[13697025,13893633,15925253,16384005,21561345,21757953],"responseheadersasync":[13697025,13762561,13828097,13893633,15990789,16121861,16252933,16449541,21561345,21626881,21692417,21757953],"responsestream":[13762561,13828097,16187397,16318469,21626881,21692417,22740997,24379397],"resolvedtarget":[14090241,17498117,22020097],"resolved":[14090241,17498113,22020097],"requestheaders":[15400961,20119557,24051713],"responsetrailers":[15400961,20185093,24051713],"recover":[22282242],"raised":[24772609],"regardless":[24772609],"requested":[24772609],"rejections":[24772609],"resource":[24772610],"resource_exhausted":[24772609],"resourceexhausted":[24772609],"required":[24772609],"rmdir":[24772609],"range":[24772609],"reading":[24772609],"retrying":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_115.json b/doc/ref/csharp/html/fti/FTI_115.json deleted file mode 100644 index f812ee6d1c5..00000000000 --- a/doc/ref/csharp/html/fti/FTI_115.json +++ /dev/null @@ -1 +0,0 @@ -{"search":[65537],"sort":[65537],"serializeobjectstate":[131073,23920641],"serialized":[131074,23920642],"state":[131073,2228227,6553602,6684673,12320769,14090242,17563654,22020101,22282241,23920641,24772611],"stats":[196609,655361,22151169],"sequence":[196609,786433,22151169],"streams":[196609,851969,6160385,22151169],"start":[196609,983041,3538945,3932161,3997697,10485761,10682369,10878981,13238273,22151169,23986177,24444929,24510465],"secondaryuseragentstring":[196609,1048581,22151169],"secondary":[196609,1048577,22151169],"ssltargetnameoverride":[196609,1114117,22151169],"ssl":[196609,1114113,11010049,11075585,11141121,11206657,11272193,12320770,13303811,13369346,22151169,24576004,24641539],"suffix":[327681,1245185,8978433,9043969,23658497],"serverport":[393219,1376258,3735555,3932161,9895941,10485773,10616838,12320769,13238273,15532035,20447235,20512771,20578307,20643843,24182792,24444933],"server":[393218,1376258,2162693,3538950,3866625,3932166,3997700,6094849,6160385,6225923,9895938,10092545,10420227,10485765,10551300,10616834,10682373,10747906,10813443,10878979,10944518,11141121,11206657,11272193,12320793,13172737,13238277,13369346,14221313,14745601,15204353,15335432,15466497,15597569,17825793,18284545,19333121,20381697,20447234,20512769,20709386,20774922,20840451,20971521,21430273,21692417,21954565,22347777,22413313,22609922,22740993,23199745,23265281,23658498,23789572,23855105,23986196,24051713,24117250,24182788,24248321,24313857,24379394,24444936,24510469,24576001,24641539,24772609,24838145],"status":[458755,1441799,1507335,1769473,1835009,1900545,1966081,4194308,4784134,4980742,5177350,5439494,9568269,9633805,11337731,11403271,12320772,13107204,15269890,15400962,15728644,19726348,20250637,21233666,21299203,21561345,21626881,21692417,21757953,23658497,23920647,24051714,24707082,24772610],"statuscode":[458754,1441793,1507329,11403274,12320770,15728641,21299211,24707076,24772613],"successful":[458753,1507329,24707073,24772609],"structure":[458753,1441793,1507329,2031617,2097153,3342337,4194305,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,8912897,8978433,9043969,11337729,11403265,12320769,12517377,13041665,13959169,14024705,15138817,15728641,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,18939905,19005441,19070977,19136513,21233665,21299201,21823490,21889026,23724034,24707074],"syntax":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468802,11534338,11599874,11665410,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361],"string":[655365,720901,786437,851973,917509,983045,1048581,1114117,1245189,1572869,1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014661,3080196,3211265,3276804,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932162,3997697,4063233,4128769,4194305,4390915,4456449,4521989,5701638,5767180,6422534,6488078,6750214,6815750,7340042,7405577,7471115,7536650,7667721,7733259,7798794,7929863,7995401,8060936,8192007,8257545,8323080,8585225,8650770,8912903,8978438,9043981,9502730,9633798,9895941,10289157,10354693,10551302,11075592,11141127,11272198,11337735,11403269,11862022,11993095,12124166,12320769,12517379,12582916,12648450,12713986,12779522,12845058,12910594,12976131,13041667,13107201,13238273,13303811,13369345,13500417,13565953,13631489,14155777,14942209,15138817,15269889,16580614,16646150,17301510,17367047,17498118,17629190,17825799,18284550,18350086,18415622,18546694,18612230,18677767,19005446,19070983,19333127,19398663,19595271,19922950,19988486,20054022,20578310,20971526,21168134,21233670,21561345,21626881,21692417,21757953,21823491,22020099,22085638,22216706,22347777,22544385,22609921,22675457,22806529,22872069,23330817,23396357,23461892,23527425,23592961,23658500,23724037,23855105,23920643,23986177,24051713,24117249,24182785,24248321,24313857,24444930,24510465,24576004,24641538,24707074,25034755,25231361],"static":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179651,1245185,1310723,1376257,1441795,1507331,1572865,1638403,4521987,4587523,6094851,6160387,6225923,6291459,6356995,7143427,8388611,10354691,11468803,11534339,11599875,11665411,11730947,11796483,11862019,11927555,11993091,12058627,12124163,18022403,18087939,18677763,20381699,21495809,21954561,22151169,23527425,24903681,24969217,25034753,25100289],"shared":[1179649,1310721,1441793,1507329,1638401,4521985,4587521,6094849,6160385,6225921,6291457,6356993,7143425,8388609,10354689,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,18022401,18087937,18677761,20381697],"stream":[1769473,1835010,1900545,1966081,2162693,2686978,2818051,2883585,4259845,4653057,4915202,5111809,5308417,6094849,6160387,6225922,7274497,11468801,11534337,11599874,11665409,12320772,13434883,13697025,13762562,13828097,15859713,16056321,16187393,16318465,21561346,21626884,21692418,21757953,21954565,22937603,23003137,23068676,23265282,23789571,24903685,25165825],"specified":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014658,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4456449,7602177,8126465,8388609,12320769,12386305,21430273,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085634,22347777,22544385,22609921,22675457,22806529,23330817,23396354,23461889,23527425,23592961,23658497,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707073,24772610,25231361],"serves":[1769473,1835009,1900545,1966081,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4456449,21561345,21626881,21692417,21757953,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,25231361],"set":[2031617,2097155,5570561,5832705,5898241,5963777,7012354,12255233,14221314,14548993,14614529,14811137,17760260,17825798,18153477,18219012,19267589,20250628,20316164,21430273,21823489,21889027,22347778,23003137,23068673,23265281],"streaming":[2162694,3866627,6094850,6160386,6225922,9961473,10027009,10092545,12320774,12451841,13172739,13697025,13762562,13828097,15400961,15859713,16056321,16187393,16318465,20316161,21561346,21626883,21692418,21954566,22413313,22740993,24051713,24313859,24379393,24903681],"scenario":[2162691,6094849,6160385,6225921,21954563],"sends":[2162691,3604482,6094849,6160385,6225921,9764866,21954563,24051714],"single":[2162689,2752513,2818049,2883585,3866626,6094849,7208961,10158082,12320772,13172738,14221313,17825793,21757954,21954561,22020097,22347777,23003137,23068673,23265281,23789572,23986177,24313858],"sending":[2162689,6160385,21954561],"simple":[2162690,4325377,6291457,6356993,11730945,21954562,24969217],"starting":[2228226,6553602,22020098],"shallow":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"shutdownasync":[2228225,3538945,6619141,10813445,22020097,23986177],"setlogger":[2621441,7143430,22806529],"sets":[2621441,3473409,7143425,14680065,15269891,18219009,22806529,23134209,23920644],"severity":[3014662,3080198,7405569,7471105,7536641,7667713,7733249,7798785,7929857,7995393,8060929,8192001,8257537,8323073,12713986,12779522,12845058,12910594,23396358,23461894],"serializer":[3145729,8388615,8454149,15007746,18808838,23527425,23592962],"subsequent":[3473409,14548993,14614529,14811137,18153473,23003137,23068673,23265281,23920641],"serializationinfo":[3473409,23920641],"shutdown":[3538948,10420226,10813442,12320769,22806529,23986180],"serviced":[3538945,10813441,23986177],"starts":[3538945,10878977,23986177],"servercallcontext":[3604483,6029313,9699331,9764866,12320770,15400963,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,22413317,22740997,23134209,24051719,24379397,24838149],"servercredentials":[3670019,3932161,9830406,9895941,10551302,12320769,13238273,15466499,20381704,20512774,24117257,24444929,24641541],"serverservicedefinition":[3801092,3866627,9961479,10027015,10092551,10158087,10223625,10289154,10354696,10682374,10747910,12320772,13172737,24248329,24313862,24510468],"serverstreamingservermethod":[3866625,10092550,12320769,13172737,24313857,24379397],"serverportcollection":[3932163,10485763,10551298,10616834,12320769,13238274,20709382,24444935],"servicedefinitioncollection":[3997699,10682371,10747906,12320769,20774918,24510471],"service":[3997698,9502721,10289153,10354689,10682370,12320770,14745601,15204353,15335425,18415617,19595265,20774913,23199745,23855105,23986177,24248321,24510467,24772610],"sslcredentials":[4063235,11010054,11075591,11141126,12320769,13303813,15597571,20905986,20971522,22675457,24576010],"sslservercredentials":[4128771,11206662,11272198,12320769,13369348,15663107,21037058,21102594,21168130,24117249,24641545],"system":[4521985,5701633,5767170,5832705,5898241,6029314,6422530,6488066,6553601,6684677,6750210,6815747,7012354,7340034,7405574,7471116,7536646,7667718,7733260,7798790,7929862,7995404,8060934,8192006,8257548,8323078,8388622,8454146,8585224,8650760,8847364,8978434,9043970,9240580,9371651,9502722,9633793,9895938,10289153,10354689,10551298,10944513,11075586,11141121,11206657,11272195,11403265,11468807,11599882,11665412,11730956,11796481,11862018,11993090,12058625,12124162,12386305,19267586,21495809,21561345,21626881,21692417,21757953,21954561,22020097,22085633,22151169,22347777,22544385,22609921,22675457,22806529,22872065,23330817,23396354,23527425,23592961,23658497,23855105,23920642,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24772613,24903681,24969217,25034753,25100289,25231361],"sub":[4653057,4915201,5111809,5308417,5636097,5701633,5767169,6029313,6422529,6488065,6750209,6815745,6946817,7012353,7077889,7143425,7340033,7405569,7471105,7536641,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8192001,8257537,8323073,8454145,8519681,8585217,8650753,8716289,8847361,8978433,9043969,9240577,9371649,9437185,9502721,9568257,9633793,9830401,9895937,10289153,10682369,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11403265,11730945,11796481,11862017,12058625,12124161,12189697,22872065],"sealed":[4653057,4915201,5111809,5308417,7405569,7471105,7536641,7602177,7667713,7733249,7798785,8519681,8716289,8781825,8847361,9109505,9175041,9240577,9306113,9371649,10616833,10747905,18874369,19202049,19267586,19333121,19398657,19595265,19660801,21495809,21561346,21626882,21692418,21757954,21954561,22085634,22151169,23330818,23527425,23658498,24576002,24903681,24969217,25034753,25100289],"struct":[5636097,5701633,5767169,6029313,6094850,6160386,6225922,6291458,6356994,6881282,8978433,9043969,9961474,10027010,10092546,10158082,11468801,11534337,11599873,11665409,12517379,13041666,21823493,21889027,23724036,24707074],"sent":[6029313,12320773,15400961,20119553,23658501,23789571,24051713],"stringvalue":[6488069,14155777,17367045,22085633],"specific":[6750209,6815745,7864321,12648450,15269889,22020098,23396353,23920641],"secure":[6750210,6815745,9895937,10551297,12320769,12648449,22020097,22675457],"serialize":[8454145,13959169,16777217,21823489],"summary":[8519681,8585217,8650753,8716289,8781825,8847361,9109505,9175041,9240577,9306113,9371649,18874369,19202049,19267585,20447233,20512769,20578305,20643841],"servicename":[9502725,10289157,10354693,14745601,15204353,18415621,19595271,23199745,23855105],"send":[9764865,13697025,13762561,14024705,15400962,15859713,16056321,17039361,20185089,20250625,21561345,21626881,21889025,24051714],"servicedefinition":[10682374],"streamreader":[11468806,11534342],"streamwriter":[11599878,11665414],"stubs":[12255233,12320769,21495809,22347777],"servers":[12320769,22020097],"supported":[12320770,22151169,23789569,24772609],"situations":[12320769,22609921],"sense":[12320769,22609921],"serializing":[12320769,23592961],"supports":[12320769,14221313,17825793,22347777,23658497],"services":[12320769,15335426,20774918,23986179],"structures":[12320769],"sharing":[12320769,23134209],"simplify":[12451842,24903681,25034753],"started":[14221313,15335426,17760257,20709377,20774913,22347777,23986178],"served":[14221313,17825793,22347777],"security":[14352385,15466497,18022401,20381697,22675457,24117249],"stringmarshaller":[14942209,18677765,23527425],"source":[15269889,23920641],"stacktrace":[15269889,23920641],"stack":[15269889,23920641],"shutdowntask":[15335425,20840453,23986177],"signals":[15400961,19791873,24051713],"setting":[15400961,20316161,24051713],"success":[15728641,21299201,24707073,24772609],"sealedattribute":[21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22085633,22151169,23330817,23527425,23658497,23724033,24576001,24707073,24903681,24969217,25034753,25100289],"serverstreaming":[23789569],"simultaneously":[23789569],"space":[24772612],"successfully":[24772609],"sequencer":[24772609],"seeking":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_116.json b/doc/ref/csharp/html/fti/FTI_116.json deleted file mode 100644 index 2aa9de37828..00000000000 --- a/doc/ref/csharp/html/fti/FTI_116.json +++ /dev/null @@ -1 +0,0 @@ -{"topic":[1],"title":[65537],"type":[131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703938,1769474,1835010,1900546,1966082,2031619,2097155,2162689,2228226,2293762,2359298,2424834,2490370,2555906,2621442,2686977,2752513,2818049,2883585,2949122,3014659,3080194,3145729,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932164,3997698,4063234,4128770,4194306,4259841,4325377,4456450,4521986,4587523,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5373953,5439489,5505025,5570562,5636099,5701636,5767174,5832706,5898242,5963778,6029317,6094852,6160389,6225925,6291461,6356997,6422530,6488066,6553602,6619137,6684675,6750211,6815748,6881286,6946817,7012354,7143425,7208962,7274497,7340034,7405570,7471107,7536642,7602179,7667714,7733251,7798786,7864321,7929858,7995395,8060930,8126467,8192002,8257539,8323074,8388612,8454146,8519681,8585218,8650754,8781826,8847362,8912897,8978434,9043970,9109505,9175042,9240578,9306114,9371649,9502731,9568257,9633794,9699330,9764866,9895940,9961476,10027012,10092548,10158084,10223617,10289153,10354690,10420225,10485763,10551301,10616833,10682369,10747905,10813441,10944513,11075585,11141122,11206657,11272195,11337729,11403266,11468805,11534340,11599878,11665413,11730947,11796481,11862018,11927555,11993092,12058625,12124162,12189697,12320773,13238274,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155779,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745603,14811137,14876673,14942210,15007745,15073281,15138817,15204355,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432583,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481159,18546689,18612225,18677762,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267586,19333121,19398657,19464193,19529729,19595265,19660809,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495811,21561351,21626887,21692422,21757958,21823495,21889028,21954562,22020099,22085637,22151170,22216706,22282241,22347779,22413319,22478849,22544387,22609923,22675459,22741000,22806531,22872068,22937604,23003140,23068676,23134210,23199748,23265283,23330819,23396357,23461891,23527427,23592964,23658499,23724035,23789569,23855112,23920643,23986179,24051715,24117251,24182787,24248323,24313859,24379400,24444933,24510467,24576003,24641539,24707075,24772609,24838151,24903682,24969218,25034753,25100290,25165825,25231363],"top":[131073,196609,262145,327681,393217,458753,524289,589825,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686978,2752513,2818050,2883586,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,21495809,21561346,21626882,21692418,21757954,21823491,21889027,21954561,22020099,22085635,22151169,22347779,22544388,22609921,22675459,22806530,22937603,23003138,23068675,23134209,23199745,23265283,23330819,23396354,23461889,23527426,23592963,23658500,23724035,23855107,23920644,23986179,24051714,24117251,24182788,24248321,24313858,24444929,24510465,24576003,24641539,24707076,24903681,24969217,25034753,25100289,25231364],"tracing":[196609,655361,12320769,22151169,22609921],"transports":[196609,786433,22151169],"target":[196609,1114113,6750214,14090242,14221313,17629190,17825793,22020098,22151169,22347777],"testing":[196609,1114113,14942209,18677761,22151169,23527425],"token":[1703938,3604481,4521986,4587521,5832705,6029313,7012353,9699329,12320771,14024706,14286849,15400961,16908289,17104897,17891329,19791873,21495810,21889026,22544385,22609923,24051714],"trequest":[1769475,1835011,2031620,2162693,2359297,3407875,3866636,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5570568,5636106,5701642,5767178,6094866,6160402,6225938,6291474,6357010,6881298,9502727,9961492,10027028,10092564,10158100,12320776,12517387,13172748,13697027,13762563,13959171,15204355,15859720,15925250,15990786,16056328,16121858,16187394,16515074,16580610,16646146,16711682,16777224,16842754,19333122,19398658,19464200,19529730,19595266,19660802,21561352,21626888,21823505,21954565,22347777,22413324,22741004,23855113,24313868,24379404,24838156],"tresponse":[1769475,1835011,1900547,1966083,2031620,2162693,2359297,3407875,3866636,4653058,4718599,4784130,4849666,4915202,4980738,5046274,5111810,5177346,5242882,5308418,5373959,5439490,5505026,5570568,5636106,5701642,5767178,6094866,6160402,6225938,6291474,6357010,6881298,9502727,9961492,10027028,10092564,10158100,12320778,12517387,13172748,13697027,13762563,13828099,13893635,13959171,15204355,15859714,15925256,15990786,16056322,16121858,16187400,16252930,16318472,16384008,16449538,16515074,16580610,16646146,16711682,16777218,16842760,19333122,19398658,19464194,19529736,19595266,19660802,21561352,21626888,21692424,21757960,21823505,21954565,22347777,22413324,22741004,23855113,24313868,24379404,24838156],"terminate":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,21561345,21626881,21692417,21757953],"throws":[1769474,1835010,1900546,1966082,4390918,4784129,4849665,4980737,5046273,5177345,5242881,5439489,5505025,11796481,11862017,11927553,11993089,12058625,12124161,13500418,13565954,13631490,15269889,21561346,21626882,21692418,21757954,23920641,25034758],"trailing":[1769473,1835009,1900545,1966081,4849665,5046273,5242881,5505025,21561345,21626881,21692417,21757953],"tostring":[1769473,1835009,1900545,1966081,2031617,2097153,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3211265,3276801,3342338,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194306,4456449,8912902,11337734,21561345,21626881,21692417,21757953,21823489,21889025,22020097,22085633,22347777,22544385,22609921,22675457,22806529,23330817,23396353,23592961,23658497,23724034,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24576001,24641537,24707074,25231361],"time":[2162689,2752513,2818049,2883585,6160385,7208961,14221313,17760257,21954561,22347777,23003137,23068673,23265281],"task":[2228227,3538946,6553607,6619141,6684678,7208965,7274501,9764870,10420230,10813446,11468813,11534341,11599877,11665413,15925254,15990790,16121862,16252934,16384006,16449542,20840454,22020099,22413317,22740997,23986178,24379397,24838149],"try":[2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"tasks":[2228225,2686977,6684673,11468803,22020097,22937601],"tolistasync":[2686977,4259841,11534343,22937601,24903681],"tokens":[4587521],"taskawaiter":[4718597,5373957],"threading":[5832705,6029313,11468803],"typename":[6094850,6160386,6225922,6291458,6356994,6881282,7602177,8126465,8388609,9961474,10027010,10092546,10158082,11468801,11534337,11599873,11665409,11927553,11993089,21561346,21626882,21692417,21757953,21823490,22413314,22740994,22937601,23003137,23068673,23265281,23592961,23855106,24379394,24838146],"true":[7012362,11272193,11599876,14286850,15138817,15663105,17891329,17956865,18939905,21037057,22544386,23724033,24641537],"typeparam":[7602177,8126465,8388609,11468801,11534337,11599873,11665409,11927553,11993089,23265281,23592961],"types":[12320770,23658497,23789569],"trailers":[12320769,15400961,20185089,23658497,24051713],"thrown":[12320769,23920641],"targetsite":[15269889,23920641],"termination":[15335425,20840449,23986177],"transientfailure":[22282241],"typically":[24772610],"transaction":[24772609],"transient":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_117.json b/doc/ref/csharp/html/fti/FTI_117.json deleted file mode 100644 index d53c17bcd08..00000000000 --- a/doc/ref/csharp/html/fti/FTI_117.json +++ /dev/null @@ -1 +0,0 @@ -{"user":[196612,983042,1048578,15269889,22151172,23920641,24772609],"used":[196609,262145,1114113,1179649,1769473,1835009,1900545,1966081,2228225,2621441,3538945,3604481,4653057,4915201,5111809,5308417,5701633,6029314,6619137,7143425,8454146,9502722,9699329,10813441,11272193,12320770,13959170,14024706,14090241,14221314,14417921,14548994,14614530,14811138,15204354,16777217,16842753,16908289,17170433,17629185,17760257,17825793,18087937,18153474,19464193,19529729,21561345,21626881,21692417,21757953,21823490,21889026,22020098,22151169,22347778,22544385,22675457,22806530,23003138,23068674,23265283,23855106,23986177,24051713,24772610],"unused":[393217,1376257,9895937,10551297,24182785],"unless":[2228225,2818049,4259841,6553601,11272193,11599873,13434881,22020097,23068673,24903681],"unmanaged":[2686977,22937601],"unaryservermethod":[3866625,10158086,12320769,13172737,24313857,24838149],"utils":[4259841,4325377,4390913,11468805,11534340,11599878,11665413,11730949,11796482,11862018,11927555,11993091,12058626,12124162,12451841,13434881,13500417,13565953,13631489,21430273,24903683,24969219,25034755],"unit":[4653060,4718593,4784129,4849665,4915204,4980737,5046273,5111812,5177345,5242881,5308420,5373953,5439489,5505025,6619137,7077889,7143425,7274497,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8519682,8585217,8650753,8716292,8847362,8912898,9109506,9240578,9371650,9437185,9830401,10223617,10420225,10616834,10682369,10747906,10813441,10878978,11010049,11337730,11730945,11796481,11862017,12058625,12124161,22872065],"unsecure":[6750209,12648449,14352385,15466497,18022401,20381697,22020097,22675457,24117249],"unsigned":[8388610,8454146,8585217,8978433,18743298,18808834,19136514],"unqualified":[9502721,14745601,15204353,18350081,19398657,23199745,23855105],"using":[11206657,11272193,12320769,13369345,21954561,24641537],"unthenticity":[11272193],"usage":[11468801,11534337,11599873,11665409],"uses":[12255233,21430273],"users":[12320769,21954561],"utilities":[12320769,12451841,21430273,23527425],"unary":[12320769,23789569,24838145],"utility":[12451842,24969217,25034753],"uri":[14090241,15400961,17498113,20054017,22020097,24051713],"useful":[14942209,18677761,20447233,23527425],"underlying":[15400961,20316161,24051713,24772609],"unknown":[24772610],"unauthenticated":[24772610],"unimplemented":[24772609],"unavailable":[24772610],"unrecoverable":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_118.json b/doc/ref/csharp/html/fti/FTI_118.json deleted file mode 100644 index e6d0315afc0..00000000000 --- a/doc/ref/csharp/html/fti/FTI_118.json +++ /dev/null @@ -1 +0,0 @@ -{"value":[393217,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376258,1441793,1507329,1572865,1638401,2031617,2097155,3932162,4521985,4587521,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5373953,5439489,5505025,5570562,5832706,5898242,5963778,6094849,6160385,6225921,6291457,6356993,6422530,6488066,6553601,6619137,6684673,6881281,7208961,7274497,7602177,8126465,8388609,8650758,8781825,8912897,8978434,9043975,9109505,9175041,9306113,9699329,9764865,9895937,9961473,10027009,10092545,10158081,10223617,10354689,10420225,10485762,10551298,10616833,10747905,10813441,11337729,11468801,11534337,11599873,11665409,11927553,11993089,12582914,13041666,13238274,14155778,14548993,14614529,14811137,15138820,15269890,15400961,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235970,17301505,17367042,17432577,17498113,17563649,17629185,17694721,17760258,17825794,17891329,17956865,18022401,18087937,18153475,18219010,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939906,19005441,19070983,19136514,19202049,19267586,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250626,20316163,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21823490,21889028,22085636,22216707,22282241,22413313,22478849,22740993,23003137,23068673,23265281,23724039,23789569,23920642,24051713,24182785,24379393,24444930,24707073,24772610,24838145,25165825],"versioninfo":[524291,1572866,12320769,25100295],"version":[524289,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572866,1638401,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12320769,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100291,25165825,25231361],"val":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401],"valuetype":[2031619,2097155,3342339,4194307,21823491,21889027,23724035,24707075],"values":[2031617,2097155,5570561,5832705,5898241,5963777,15728641,21299201,21823489,21889027,24707073],"void":[4653058,4915202,5111810,5308418,7143426,7405570,7471106,7536642,7667714,7733250,7798786,7929858,7995394,8060930,8192002,8257538,8323074,8519682,8585218,8650754,8716290,8847362,9240578,9371650,10682370,10878978,11730946,11796482,11862018,12058626,12124162,17760257,17825793,18153473,18219009,19267585,20250625,20316161,22872066],"virtual":[4653057,4915201,5111809,5308417,7405569,7471105,7536641,7602177,7667713,7733249,7798785,8519681,8716289,8781825,8847361,8912897,9109505,9175041,9240577,9306113,9371649,10616833,10747905,11337729,18874369,19202049,19267585,19333121,19398657,19595265,19660801],"valuebytes":[8585222,8978437,15138817,19136517,23724033],"valued":[8978433,9043969],"variable":[11010049,13303809,24576001],"visual":[11468802,11534338,11599874,11665410],"various":[12451841,21430273],"valid":[24772610]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_119.json b/doc/ref/csharp/html/fti/FTI_119.json deleted file mode 100644 index ee9112dc18a..00000000000 --- a/doc/ref/csharp/html/fti/FTI_119.json +++ /dev/null @@ -1 +0,0 @@ -{"writeoptions":[589827,1638407,4456451,6029324,12189702,12320769,14024705,14548993,14614529,14680065,14811137,15400961,15794179,17170443,18153484,18219020,20316172,21364738,21889025,23003137,23068673,23134209,23265281,24051713,25231369],"write":[589825,1638401,2752513,2818050,2883585,6029313,7208961,7274497,12189697,12320771,14024705,14548994,14614530,14680065,14811138,15400962,15794177,17170433,18153474,18219009,20316162,21364737,21889025,23003139,23068676,23134210,23265283,24051714,25165829,25231363],"withoptions":[2031617,5570566,21823489],"withcancellationtoken":[2097153,5832709,21889025],"withdeadline":[2097153,5898245,21889025],"withheaders":[2097153,5963781,21889025],"waits":[2228225,6619137,22020097],"waitforstatechangedasync":[2228225,6684679,22020097],"wide":[2621441,7143425,14417921,18087937,22806530],"writeasync":[2752513,2818049,2883585,7208965,23003137,23068673,23265281],"writes":[2752513,2818051,2883586,4259842,7208961,7274497,11599873,11665409,13434882,14548993,14614529,14811137,18153473,23003138,23068676,23265283,24903682],"writeallasync":[2818049,2883585,4259842,11599882,11665417,13434883,23068673,23265281,24903682],"warning":[3014660,3080196,7733260,7798795,8257546,8323081,12779525,12910597,23396356,23461892],"writeresponseheadersasync":[3604482,9764870,24051714],"written":[3604481,7208961,9764866,24051713],"writing":[3604481,9764865,24051713],"warmup":[4325377,11730945,24969217],"wish":[11206657,13369345,24641537],"warmupiterations":[11730950],"writeflags":[12189701,12320769,21364742,25165829],"wrappers":[12255233,21430273],"writable":[12320771,23003137,23068673,23265281],"work":[12451841,22282241,24903681],"whatsoever":[14352385,15466497,18022401,20381697,22675457,24117249],"wire":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_122.json b/doc/ref/csharp/html/fti/FTI_122.json deleted file mode 100644 index 6a0eef704ab..00000000000 --- a/doc/ref/csharp/html/fti/FTI_122.json +++ /dev/null @@ -1 +0,0 @@ -{"zero":[9895937,10551297]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_97.json b/doc/ref/csharp/html/fti/FTI_97.json deleted file mode 100644 index 0f399972ccc..00000000000 --- a/doc/ref/csharp/html/fti/FTI_97.json +++ /dev/null @@ -1 +0,0 @@ -{"automatically":[1,9895937,10551297,20447233],"authority":[196609,720897,22151169],"allow":[196609,851969,15335425,20840449,22151169,23986177],"agent":[196612,983042,1048578,22151172],"added":[393217,1376257,24182785],"assembly":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361],"authinterceptors":[1703939,4521986,4587522,12255233,21495815],"access":[1703938,4521986,4587522,6094849,6160385,6225921,6291457,13697025,13762561,13828097,13893633,15990785,16121857,16252929,16449537,21495810,21561345,21626881,21692417,21757953],"authorization":[1703937,4521985,12255233,21495810],"auth":[1703937,4521988,4587524,12255235,21430275,21495813],"asyncclientstreamingcall":[1769475,2162689,4653058,4718594,4784130,4849666,6094858,12320769,13697027,15859714,15925250,15990786,21561351,21954561],"async":[1769473,1835009,1900545,1966081,2686977,4259841,4653057,4915201,5111809,5308417,11468801,13697025,13762562,13828097,15859713,16056321,16187393,16318465,21561346,21626883,21692418,21757953,22937601,24903681],"associated":[1769473,1835009,1900545,1966081,2686977,3014659,3080195,4653057,4915201,5111809,5308417,7471105,7602177,7733249,7864321,7995393,8126465,8257537,9568257,9633793,12320769,12713985,12779521,12845057,12910593,13107202,13959169,14221313,15269889,16515073,17694721,21561345,21626881,21692417,21757953,21823489,22347777,22937601,23396356,23461891,23920644],"allows":[1769473,1966081,2228226,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,4718593,5373953,6553601,12320770,15400961,20316161,21561345,21757953,22020098,22347777,22544385,22609922,22675457,22806529,23134209,23396353,23592961,23855105,23920641,23986177,24051714,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"awaiting":[1769473,1966081,4718593,5373953,15335425,20840449,21561345,21757953,23986177],"asyncduplexstreamingcall":[1835011,2162689,4915202,4980738,5046274,6160394,12320769,13762563,16056322,16121858,16187394,21626887,21954561],"asyncserverstreamingcall":[1900547,2162689,5111810,5177346,5242882,6225930,12320769,13828099,16252930,16318466,21692423,21954561],"asyncunarycall":[1966083,2162689,5308418,5373954,5439490,5505026,6291466,12320769,13893635,16384002,16449538,21757959,21954561],"asynchronously":[2162692,2752513,2818049,2883585,3604481,6094849,6160385,6225921,6291457,7208961,9764865,21954564,23003137,23068673,23265281,24051713],"active":[2228225,6619137,22020097],"application":[2621441,2686977,7143425,12386305,14417921,15269889,18087937,21430273,22806530,22937601,23920641],"action":[2686977,4259841,11468801,11730958,22937601,24903681],"asyncstreamextensions":[2686978,2818049,2883585,4259843,11468805,11534340,11599878,11665413,12451841,13434882,22937602,23068673,23265281,24903687],"add":[3276803,3932162,3997697,8519690,8585225,8650761,10485767,10551302,10682374,12976132,13238275,23658499,24444930,24510465],"addmethod":[3866628,9961478,10027014,10092550,10158086,13172741,24313860],"adds":[3866628,3932162,3997697,9961473,10027009,10092545,10158081,10485761,10551297,10682369,13172740,13238274,24313860,24444930,24510465],"argumentexception":[4390914,11796481,11862017,13500418,25034754],"argumentnullexception":[4390914,11927553,11993089,13565954,25034754],"accesstoken":[4521989],"abstract":[4653057,4915201,5111809,5308417,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8519681,8716289,8781825,8847361,8912897,9109505,9175041,9240577,9306113,9371649,10616833,10747905,11337729,18153473,18219009,18284545,18350081,18415617,18481153,18874369,19202049,19267585,19333121,19398657,19595265,19660801,21495809,21954561,22151169,22347778,22675458,23527425,24117250,24903681,24969217,25034753,25100289],"awaitable":[6094849,6291457],"asynchronous":[6160385,6225921,13697026,13762561,13828097,13893634,15925249,15990785,16121857,16252929,16384001,16449537,21561346,21626881,21692417,21757954],"address":[6815745,14090241,15400961,17498113,20054017,22020097,24051713,24772610],"array":[7405569,7471105,7536641,7667713,7733249,7798785,7929857,7995393,8060929,8192001,8257537,8323073,8388610,8454146,8585217,8847368,8978433,18743298,18808834,19136514],"arrayindex":[8847367],"ascii":[9043970,13041665,23724033],"allowed":[9043969],"autheticate":[11206657,13369345,24641537],"authenticate":[11272193],"asyncaction":[11468806],"authentication":[12255233,21430273,24772609],"apis":[12255233,21430273,24772609],"autogenerated":[12255233,12320769,21495809,24248321],"abstraction":[12320769,22020097],"accessible":[12320769,22609921],"arbitrary":[12320769,23789569,23986177],"additional":[15269889,23920641],"assigned":[15269889,23920641],"adding":[15335426,20709377,20774913,23986178],"authenticity":[15663105,21037057,24641537],"actually":[20447233],"abstractclassattribute":[21495809,21954561,22151169,22347777,22675457,23527425,24117249,24903681,24969217,25034753,25100289],"authuri":[22872069],"argument":[24772609],"arguments":[24772609],"alreadyexists":[24772609],"attempted":[24772610],"applied":[24772609],"aborted":[24772610],"aborts":[24772609]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_98.json b/doc/ref/csharp/html/fti/FTI_98.json deleted file mode 100644 index aa09b59f12a..00000000000 --- a/doc/ref/csharp/html/fti/FTI_98.json +++ /dev/null @@ -1 +0,0 @@ -{"binaryheadersuffix":[327681,1245189,23658497],"binary":[327681,1245185,8978434,9043969,13041665,15138818,18939905,19136513,23658497,23724035],"bound":[393217,1376257,20447233,24182785],"boundport":[393217,1376257,15532033,20447238,24182786],"blockingunarycall":[2162689,6356997,21954561],"blocking":[2162689,6356993,21954561],"byte":[3276801,8388622,8454152,8585224,8978437,12976129,13041665,18743300,18808836,19136516,23658497,23724033],"builder":[3801089,3866628,9961480,10027016,10092552,10158088,10223619,10289158,10354695,12320770,13172738,24248321,24313867],"bidirectional":[3866625,10027009,12320769,13172737,21626881,24313857],"build":[3866625,10223621,24313857],"boolean":[4259841,4390916,7012356,8781826,9306114,11272195,11599879,11796483,11862019,12058627,12124163,13369345,13434881,13500418,13631490,17891330,17956866,18939906,19202050,21037058,24641537,24903681,25034756],"benchmarkutil":[4325379,11730949,12451841,24969223],"benchmark":[4325377,11730945,24969217],"bool":[7012358,8781828,9306116,11272195,11599875,11796483,11862019,12058627,12124163,17891332,17956868,18939908,19202053,21037060],"bytes":[8978433],"belongs":[9502721,14745601,15204353,18415617,19595265,23199745,23855105,24772609],"basic":[11468802,11534338,11599874,11665410],"benchmarkiterations":[11730950],"based":[12255233,12320771,14745601,15204353,18284545,19333121,21430273,22282241,22478849,23199745,23855105,24772609],"buffer":[12320769,21954561,25165826],"base":[12320769,22347777],"backend":[12320770,22609922],"beginning":[12320770,14024705,17039361,21889025,23658498],"bindservice":[12320769,24248321],"buffers":[12320769,24248321],"bidi":[12320769,22740993],"backed":[15400961,20316161,24051713],"broken":[24772610],"backoff":[24772609],"bufferhint":[25165825],"buffered":[25165826]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_99.json b/doc/ref/csharp/html/fti/FTI_99.json deleted file mode 100644 index b399ce4a014..00000000000 --- a/doc/ref/csharp/html/fti/FTI_99.json +++ /dev/null @@ -1 +0,0 @@ -{"create":[131073,3145729,8388616,10944513,12255233,14090241,17629185,21495809,22020097,23527425,23920641,23986177,24772609],"contains":[131073,3276801,5701633,5767169,8781833,12320769,21430273,23658497,23920641],"class":[131073,196609,262145,327681,393217,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2949121,3014657,3145729,3211265,3276801,3407873,3473411,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,6094855,6160391,6225927,6291463,6356999,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881287,6946818,7012353,7077890,7143425,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,9109505,9175041,9240577,9306113,9371649,9437185,9502722,9568257,9633793,9699329,9764865,9830402,9895937,9961481,10027017,10092553,10158089,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11468804,11534340,11599876,11665412,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189698,12255233,12320772,12386305,12451841,12582913,12648449,12713985,12779521,12976129,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,14090241,14155777,14221313,14286849,14352385,14417921,14876673,14942209,15007745,15073281,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18546689,18612225,18677761,18743297,18808833,18874369,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21364737,21495813,21561349,21626885,21692421,21757957,21823489,21889025,21954566,22020101,22085637,22151173,22216705,22282241,22347783,22413318,22478849,22544389,22609925,22675462,22740998,22806533,22937601,23003137,23068673,23134209,23199745,23265281,23330821,23396357,23461889,23527429,23592965,23658501,23724033,23789569,23855110,23920647,23986181,24051717,24117254,24182789,24248325,24313862,24379398,24444933,24510469,24576005,24641541,24707073,24772609,24838150,24903685,24969221,25034757,25100293,25165825,25231366],"core":[131073,196609,262145,327681,393217,458753,524289,589825,655364,720900,786436,851972,917508,983044,1048580,1114116,1179652,1245188,1310724,1376260,1441796,1507332,1572868,1638404,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4653060,4718596,4784132,4849668,4915204,4980740,5046276,5111812,5177348,5242884,5308420,5373956,5439492,5505028,5570567,5636103,5701639,5767176,5832708,5898244,5963781,6029319,6094853,6160389,6225925,6291461,6356997,6422532,6488068,6553604,6619140,6684681,6750213,6815749,6881286,6946821,7012356,7077892,7143431,7208964,7274500,7340036,7405574,7471111,7536646,7602181,7667718,7733255,7798790,7864324,7929862,7995399,8060934,8126469,8192006,8257543,8323078,8388615,8454148,8519689,8585223,8650759,8716293,8781833,8847371,8912900,8978436,9043972,9109509,9175049,9240587,9306121,9371654,9437188,9502727,9568261,9633797,9699335,9764869,9830404,9895941,9961478,10027014,10092550,10158086,10223620,10289156,10354692,10420228,10485767,10551301,10616836,10682375,10747908,10813444,10878980,10944516,11010052,11075589,11141125,11206660,11272196,11337732,11403269,11468811,11534345,11599885,11665419,11730951,11796484,11862020,11927557,11993093,12058628,12124164,12189701,12320771,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859716,15925252,15990788,16056324,16121860,16187396,16252932,16318468,16384004,16449540,16515076,16580612,16646148,16711684,16777220,16842756,16908292,16973828,17039364,17104900,17170436,17235972,17301508,17367044,17432580,17498116,17563652,17629188,17694724,17760260,17825796,17891332,17956868,18022404,18087940,18153476,18219012,18284548,18350084,18415620,18481156,18546692,18612228,18677764,18743300,18808836,18874373,18939908,19005444,19070980,19136516,19202053,19267589,19333124,19398660,19464196,19529732,19595268,19660804,19726340,19791876,19857412,19922948,19988484,20054020,20119556,20185092,20250628,20316164,20381700,20447237,20512773,20578309,20643845,20709380,20774916,20840452,20905988,20971524,21037060,21102596,21168132,21233668,21299204,21364740,21430275,21561349,21626885,21692421,21757957,21823492,21889028,21954565,22020101,22085637,22151173,22216708,22282244,22347781,22413318,22478852,22544389,22609925,22675462,22740999,22806533,22872070,22937604,23003140,23068676,23134212,23199748,23265285,23330821,23396357,23461892,23527429,23592966,23658501,23724036,23789572,23855109,23920645,23986181,24051717,24117254,24182789,24248325,24313861,24379398,24444933,24510469,24576006,24641542,24707076,24772612,24838149,24903685,24969221,25034757,25100293,25165828,25231365],"channeloptions":[196611,655362,720898,786434,851970,917506,983042,1048578,1114114,12320769,22151175],"census":[196610,655366,22151170],"collection":[196609,655361,2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932162,3997698,4128769,4456449,10616833,10747905,12320771,15269889,15335426,20709377,20774913,22020097,22151169,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23658497,23855105,23920642,23986179,24051713,24117249,24182785,24248321,24313857,24444931,24510467,24641537,25231361],"calls":[196609,720897,2162691,2228225,3538946,6094850,6160386,6225922,6291458,6356994,6619137,10420225,10813441,12320778,12451841,15400961,20316161,21561345,21626881,21692417,21889025,21954569,22020098,22151169,22609922,23986178,24051713,24903681],"concurrent":[196609,851969,22151169],"connection":[196609,851969,2228225,6553601,22020097,22151169],"channel":[196609,917505,2228233,5636108,5701644,5767180,6422529,6488065,6553605,6619140,6684677,6750220,6815753,6946827,10944513,12320779,12517379,12582914,12648456,13959170,14090245,14221314,14352385,16515084,17498114,17563651,17629187,17694732,18022401,21823493,22020121,22085636,22151170,22216706,22282246,22347778,22675458],"check":[196609,1114113,15663105,21037057,22151169,24641537,24772609],"contextpropagationoptions":[262147,1179655,2424835,7012357,9699334,12320769,14286851,17891330,17956866,22544392],"context":[262145,1179649,3604481,6029313,7012353,9699329,12320771,14024705,17104897,21889025,22413317,22544386,22609922,22740997,24051714,24379397,24838149],"containing":[327681,1310721,2686977,4259841,11075585,11141121,11534337,13303809,22937601,23658497,24576001,24903681],"choose":[393217,1376257,24182785],"contain":[393217,1376257,24182785],"cancelled":[458754,1441794,2228226,6553601,6684673,15400961,19791873,22020098,24051713,24707074,24772610],"currentversion":[524289,1572869,25100289],"current":[524289,1572865,1769475,1835011,1900547,1966083,2031617,2097153,2228228,2293763,2359300,2424836,2490372,2555908,2621444,2949123,3014660,3211268,3276803,3342338,3407876,3473412,3538948,3604485,3670020,3735556,3801092,3866628,3932164,3997700,4063235,4128772,4194306,4456452,8912897,9764865,11337729,12320769,14090241,14483457,15269891,17563649,21561347,21626883,21692419,21757955,21823489,21889025,22020101,22085635,22347780,22544388,22609924,22675460,22806532,22937601,23330819,23396356,23592964,23658499,23724034,23855108,23920647,23986180,24051717,24117252,24182788,24248324,24313860,24444932,24510468,24576003,24641540,24707074,25100290,25231364],"copy":[655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020098,22085633,22151169,22216705,22282241,22347778,22413313,22478849,22544386,22609922,22675458,22740993,22806530,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396354,23461889,23527425,23592962,23658497,23724033,23789569,23855106,23920642,23986178,24051714,24117250,24182786,24248322,24313858,24379393,24444930,24510466,24576001,24641538,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231362],"const":[655362,720898,786434,851970,917506,983042,1048578,1114114,1245186,1376258,1572866],"creates":[1703938,2228225,2359298,2424833,2490369,2555905,2621441,2686977,3014657,3145729,3211265,3407873,3473410,3538945,3604482,3670017,3735553,3801090,3866626,3932161,3997697,4128769,4259841,4456449,4521985,4587521,6029313,6422529,6488065,6750209,6815745,6881281,7012353,7340033,7864321,8388609,9568257,9633793,9699329,9895937,10223617,10289153,10354689,11010049,11075585,11141121,11206657,11272193,11403265,11534337,12582914,12648450,13107202,13303811,13369346,21495810,21889025,22020099,22085634,22347778,22544386,22609921,22675457,22806529,22937601,23330817,23396354,23527425,23592961,23855105,23920644,23986177,24051714,24117249,24182786,24248322,24313859,24444929,24510465,24576003,24641539,24707073,24903681,25231361],"credential":[1703937,4587527,14352385,15466497,18022401,20381697,21495809,22675457,24117249],"cleanup":[1769473,1835009,1900545,1966081,2228225,2359297,2424833,2490369,2555905,2621441,3014657,3211265,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4456449,4653057,4915201,5111809,5308417,21561345,21626881,21692417,21757953,22020097,22347777,22544385,22609921,22675457,22806529,23396353,23592961,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24444929,24510465,24641537,25231361],"call":[1769482,1835017,1900553,1966090,2162693,2228225,2359297,3604484,3932161,3997697,4653062,4784130,4849666,4915205,4980738,5046274,5111813,5177346,5242882,5308422,5439490,5505026,5636099,5701635,5767170,6029316,6094856,6160392,6225928,6291464,6356999,6553601,6881283,6946817,7012354,9568257,9633793,9699330,9764866,10485761,10682369,11468802,11534338,11599874,11665410,12320788,13238273,13697025,13893633,13959170,14024709,14221313,14286850,15269890,15400961,15925249,16384001,16515073,16711681,16908289,16973825,17039361,17104897,17170433,17760257,17891329,17956865,19726337,19791873,21561357,21626891,21692426,21757965,21823493,21889029,21954565,22020098,22347778,22413313,22544386,22609922,22740993,22872065,23658501,23920644,24051718,24248321,24379393,24444929,24510465,24772609,24838145],"completed":[1769473,1835009,1966081,4653057,4915201,5308417,21561345,21626881,21757953,24772609],"cancellation":[1769473,1835009,1900545,1966081,4653057,4915201,5111809,5308417,5832705,6029313,7012353,12320769,14286849,15400961,17891329,19791873,21561345,21626881,21692417,21757953,22544385,22609921,24051713],"callinvocationdetails":[2031620,5570569,5636103,5701639,5767175,6094853,6160389,6225925,6291461,6356997,6881285,12320769,12517384,13959171,16515074,16580610,16646146,16711682,16777218,16842754,21823501],"code":[2031617,2097153,3342337,4194305,11403265,12320769,12451841,15728641,21299201,21823489,21889025,23724033,24248321,24707074,25034753],"calloptions":[2097158,5570566,5636102,5701638,5767174,5832712,5898248,5963784,6029318,6881285,12320769,12517379,14024707,16711686,16908290,16973826,17039362,17104898,17170434,21823491,21889035],"cancellationtoken":[2097153,5832715,6029324,14024705,15400961,16908299,19791883,21889026,24051713],"client":[2162693,3604481,3866625,6094851,6160385,6225921,9764865,9961473,11010049,11075585,11141121,11206658,11272195,12255234,12320780,13172737,13303811,13369346,14221314,15400963,15597570,15663106,17694721,17760257,20119553,20185089,20250625,20905986,21037057,21168129,21430273,21495810,21561345,21823489,21889025,21954566,22020097,22347779,22413313,22675457,23068673,23658497,23789572,24051716,24313857,24576006,24641540,24772609],"completely":[2162689,6160385,21954561,25165825],"connectasync":[2228225,6553605,22020097],"connect":[2228225,6553601,22020097],"completes":[2228226,2818050,4259841,6553601,6684673,7274497,11599873,13434881,22020098,23068674,24903681],"case":[2228225,6553601,22020097],"cleans":[2228225,3538945,6619137,10813441,22020097,23986177],"channeloption":[2293763,6422534,6488070,6750214,6815750,10944517,12320771,12582916,12648450,14155783,17235971,17301507,17367043,17432585,22020098,22085645,22216706],"clientbase":[2359299,6881282,6946822,12255233,12320769,14221315,17694722,17760258,17825794,21495809,22347785],"createcall":[2359297,6881285,22347777],"contextpropagationtoken":[2490371,6029317,9699333,12320770,17104902,22544385,22609927],"credentials":[2555907,6750220,6815756,7077894,9895942,10551302,11010049,11075585,11141121,11206657,11272193,12320773,12648450,13303811,13369346,14352387,15532033,18022408,20512775,22020098,22675466,24117249,24182785,24576009,24641539,24772609],"completeasync":[2818049,7274501,23068673],"closes":[2818049,7274497,23068673],"called":[2818049,3604481,7274497,9764865,13959169,15400962,16646145,19922945,19988481,21823489,23068673,24051715],"calling":[2818049,7274497,23068673],"close":[2818049,4259841,11599873,12320769,13434881,23068674,24903681],"consolelogger":[3014659,7405572,7471109,7536644,7602179,7667716,7733253,7798788,7864325,12386305,12713986,12779522,23396360],"clear":[3276801,8716296,23658497],"copyto":[3276801,8847370,23658497],"cause":[3473409,23920641],"cancelling":[3538945,10420225,14024705,16908289,21889025,23986177],"complete":[3538946,10420225,10813441,11599880,23986178,24772609],"createpropagationtoken":[3604481,9699334,24051713],"child":[3604481,7012354,9699329,12320770,14286850,17891329,17956865,22544386,22609922,24051713],"createbuilder":[3801089,10354693,24248321],"clientstreamingservermethod":[3866625,9961478,12320769,13172737,22413317,24313857],"checkargument":[4390914,11796486,11862022,13500419,25034754],"condition":[4390916,11796487,11862023,12058631,12124167,13500418,13631490,24772609,25034756],"checknotnull":[4390914,11927559,11993095,13565955,25034754],"checkstate":[4390914,12058630,12124166,13631491,25034754],"constructor":[5636097,5701633,5767169,6029313,6422529,6488065,6750209,6815745,6946817,7012353,7077889,7340033,7864321,8454145,8978433,9043969,9437185,9502721,9568257,9633793,9830401,9895937,10289153,10944513,11010049,11075585,11141121,11206658,11272193,11403265,12189697,12517377,12582913,12648449,13041665,13107201,13303809,13369346,24641537],"channelstate":[6684679,12320769,17563654,22282245],"connects":[6750209,6815745,12648450,22020098],"collections":[6750209,6815745,10944513,11206657,11272193,11599877,11665412],"cal":[7012354,14286850,17891329,17956865,22544386],"customlogger":[7143430],"certificate":[7340034,11141121,12320769,14876673,15597570,15663105,18546689,20905986,21102593,23330819,24576002,24641537],"chain":[7340034,14876673,18546689,23330818],"certificatechain":[7340037,14876673,18546693,23330817],"console":[7864321,12386305,23396354],"char":[8388610,8454146,8585217,8978433,18743298,18808834,19136514],"characters":[9043969],"chosen":[9895937,10551297],"certificates":[11010049,11075585,11141121,11206658,11272194,13303810,13369345,15597569,15663105,20971521,21168129,24576003,24641538],"ctor":[11075585],"currently":[12255233,21430273,24772609],"consists":[12255233,12320769,21430273,24707073],"classes":[12255234,12320769,12386305,12451841,21495809],"created":[12255233,12320769,21495809,24248321],"concepts":[12320769,21430273],"clients":[12320769,21954561],"channels":[12320769,22020097],"connections":[12320769,22020097],"creating":[12320771,14352385,15466497,18022401,20381697,22020097,22085633,22675457,23527425,24117249],"compared":[12320769,22020097],"corresponds":[12320769,22085633],"contexts":[12320769,22609921],"creation":[12320769,22675457],"capability":[12320769,23068673],"connectivity":[12320769,14090241,17563649,22020097,22282241],"compressionlevel":[12320769,22478853],"compression":[12320770,22478854,25165825],"checking":[12451841,25034753],"custom":[14221313,17760257,22347777],"count":[15073281,18874376,23658497],"coded":[15269889,23920641],"caused":[15269889,23920641,24772609],"causes":[15269889,23920641],"convenience":[15400961,20316161,24051713],"constructors":[21823489,21889025,22020097,22085633,22347777,22544385,22675457,23330817,23396353,23592961,23658497,23724033,23855105,23920641,23986177,24117249,24182785,24313857,24576001,24641537,24707073,25231361],"connecting":[22282242],"clientstreaming":[23789569],"caller":[24772611],"converted":[24772609],"change":[24772609],"concurrency":[24772609],"corrected":[24772609],"corruption":[24772609],"completion":[25165825]} \ No newline at end of file diff --git a/doc/ref/csharp/html/fti/FTI_Files.json b/doc/ref/csharp/html/fti/FTI_Files.json deleted file mode 100644 index 78844e03e25..00000000000 --- a/doc/ref/csharp/html/fti/FTI_Files.json +++ /dev/null @@ -1 +0,0 @@ -["gRPC C# - Redirect\u0000index.html\u000018","gRPC C# - Search\u0000search.html\u000012","RpcException Events\u0000html/Events_T_Grpc_Core_RpcException.htm\u000055","ChannelOptions Fields\u0000html/Fields_T_Grpc_Core_ChannelOptions.htm\u0000111","ContextPropagationOptions Fields\u0000html/Fields_T_Grpc_Core_ContextPropagationOptions.htm\u000039","Metadata Fields\u0000html/Fields_T_Grpc_Core_Metadata.htm\u000047","ServerPort Fields\u0000html/Fields_T_Grpc_Core_ServerPort.htm\u000060","Status Fields\u0000html/Fields_T_Grpc_Core_Status.htm\u000057","VersionInfo Fields\u0000html/Fields_T_Grpc_Core_VersionInfo.htm\u000034","WriteOptions Fields\u0000html/Fields_T_Grpc_Core_WriteOptions.htm\u000032","ChannelOptions.Census Field\u0000html/F_Grpc_Core_ChannelOptions_Census.htm\u000082","ChannelOptions.DefaultAuthority Field\u0000html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm\u000080","ChannelOptions.Http2InitialSequenceNumber Field\u0000html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm\u000081","ChannelOptions.MaxConcurrentStreams Field\u0000html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm\u000087","ChannelOptions.MaxMessageLength Field\u0000html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm\u000083","ChannelOptions.PrimaryUserAgentString Field\u0000html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm\u000088","ChannelOptions.SecondaryUserAgentString Field\u0000html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm\u000088","ChannelOptions.SslTargetNameOverride Field\u0000html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm\u000087","ContextPropagationOptions.Default Field\u0000html/F_Grpc_Core_ContextPropagationOptions_Default.htm\u000088","Metadata.BinaryHeaderSuffix Field\u0000html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm\u000083","Metadata.Empty Field\u0000html/F_Grpc_Core_Metadata_Empty.htm\u000087","ServerPort.PickUnused Field\u0000html/F_Grpc_Core_ServerPort_PickUnused.htm\u0000105","Status.DefaultCancelled Field\u0000html/F_Grpc_Core_Status_DefaultCancelled.htm\u000089","Status.DefaultSuccess Field\u0000html/F_Grpc_Core_Status_DefaultSuccess.htm\u000089","VersionInfo.CurrentVersion Field\u0000html/F_Grpc_Core_VersionInfo_CurrentVersion.htm\u000081","WriteOptions.Default Field\u0000html/F_Grpc_Core_WriteOptions_Default.htm\u000081","AuthInterceptors Methods\u0000html/Methods_T_Grpc_Auth_AuthInterceptors.htm\u000065","AsyncClientStreamingCall(TRequest, TResponse) Methods\u0000html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm\u0000215","AsyncDuplexStreamingCall(TRequest, TResponse) Methods\u0000html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm\u0000209","AsyncServerStreamingCall(TResponse) Methods\u0000html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm\u0000196","AsyncUnaryCall(TResponse) Methods\u0000html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm\u0000208","CallInvocationDetails(TRequest, TResponse) Methods\u0000html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm\u0000132","CallOptions Methods\u0000html/Methods_T_Grpc_Core_CallOptions.htm\u0000162","Calls Methods\u0000html/Methods_T_Grpc_Core_Calls.htm\u0000160","Channel Methods\u0000html/Methods_T_Grpc_Core_Channel.htm\u0000258","ChannelOption Methods\u0000html/Methods_T_Grpc_Core_ChannelOption.htm\u000095","ClientBase Methods\u0000html/Methods_T_Grpc_Core_ClientBase.htm\u0000154","ContextPropagationOptions Methods\u0000html/Methods_T_Grpc_Core_ContextPropagationOptions.htm\u0000142","ContextPropagationToken Methods\u0000html/Methods_T_Grpc_Core_ContextPropagationToken.htm\u0000142","Credentials Methods\u0000html/Methods_T_Grpc_Core_Credentials.htm\u0000142","GrpcEnvironment Methods\u0000html/Methods_T_Grpc_Core_GrpcEnvironment.htm\u0000155","IAsyncStreamReader(T) Methods\u0000html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm\u0000113","IAsyncStreamWriter(T) Methods\u0000html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm\u000047","IClientStreamWriter(T) Methods\u0000html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm\u0000113","IServerStreamWriter(T) Methods\u0000html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm\u000079","KeyCertificatePair Methods\u0000html/Methods_T_Grpc_Core_KeyCertificatePair.htm\u000095","ConsoleLogger Methods\u0000html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm\u0000234","ILogger Methods\u0000html/Methods_T_Grpc_Core_Logging_ILogger.htm\u0000119","Marshallers Methods\u0000html/Methods_T_Grpc_Core_Marshallers.htm\u000038","Marshaller(T) Methods\u0000html/Methods_T_Grpc_Core_Marshaller_1.htm\u0000146","Metadata Methods\u0000html/Methods_T_Grpc_Core_Metadata.htm\u0000118","Entry Methods\u0000html/Methods_T_Grpc_Core_Metadata_Entry.htm\u000099","Method(TRequest, TResponse) Methods\u0000html/Methods_T_Grpc_Core_Method_2.htm\u0000153","RpcException Methods\u0000html/Methods_T_Grpc_Core_RpcException.htm\u0000199","Server Methods\u0000html/Methods_T_Grpc_Core_Server.htm\u0000198","ServerCallContext Methods\u0000html/Methods_T_Grpc_Core_ServerCallContext.htm\u0000211","ServerCredentials Methods\u0000html/Methods_T_Grpc_Core_ServerCredentials.htm\u0000142","ServerPort Methods\u0000html/Methods_T_Grpc_Core_ServerPort.htm\u0000142","ServerServiceDefinition Methods\u0000html/Methods_T_Grpc_Core_ServerServiceDefinition.htm\u0000152","Builder Methods\u0000html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm\u0000261","ServerPortCollection Methods\u0000html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm\u0000215","ServiceDefinitionCollection Methods\u0000html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm\u0000181","SslCredentials Methods\u0000html/Methods_T_Grpc_Core_SslCredentials.htm\u000095","SslServerCredentials Methods\u0000html/Methods_T_Grpc_Core_SslServerCredentials.htm\u0000142","Status Methods\u0000html/Methods_T_Grpc_Core_Status.htm\u000096","AsyncStreamExtensions Methods\u0000html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm\u0000113","BenchmarkUtil Methods\u0000html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm\u000038","Preconditions Methods\u0000html/Methods_T_Grpc_Core_Utils_Preconditions.htm\u000096","WriteOptions Methods\u0000html/Methods_T_Grpc_Core_WriteOptions.htm\u0000142","AuthInterceptors.FromAccessToken Method\u0000html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm\u0000129","AuthInterceptors.FromCredential Method\u0000html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm\u0000145","AsyncClientStreamingCall(TRequest, TResponse).Dispose Method\u0000html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm\u0000161","AsyncClientStreamingCall(TRequest, TResponse).GetAwaiter Method\u0000html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm\u0000108","AsyncClientStreamingCall(TRequest, TResponse).GetStatus Method\u0000html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm\u0000101","AsyncClientStreamingCall(TRequest, TResponse).GetTrailers Method\u0000html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm\u0000104","AsyncDuplexStreamingCall(TRequest, TResponse).Dispose Method\u0000html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm\u0000162","AsyncDuplexStreamingCall(TRequest, TResponse).GetStatus Method\u0000html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm\u0000101","AsyncDuplexStreamingCall(TRequest, TResponse).GetTrailers Method\u0000html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm\u0000104","AsyncServerStreamingCall(TResponse).Dispose Method\u0000html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm\u0000151","AsyncServerStreamingCall(TResponse).GetStatus Method\u0000html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm\u000096","AsyncServerStreamingCall(TResponse).GetTrailers Method\u0000html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm\u000099","AsyncUnaryCall(TResponse).Dispose Method\u0000html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm\u0000156","AsyncUnaryCall(TResponse).GetAwaiter Method\u0000html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm\u0000103","AsyncUnaryCall(TResponse).GetStatus Method\u0000html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm\u000096","AsyncUnaryCall(TResponse).GetTrailers Method\u0000html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm\u000099","CallInvocationDetails(TRequest, TResponse).WithOptions Method\u0000html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm\u0000186","CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)\u0000html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm\u0000221","CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)\u0000html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm\u0000265","CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)\u0000html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm\u0000319","CallOptions.WithCancellationToken Method\u0000html/M_Grpc_Core_CallOptions_WithCancellationToken.htm\u0000127","CallOptions.WithDeadline Method\u0000html/M_Grpc_Core_CallOptions_WithDeadline.htm\u0000125","CallOptions.WithHeaders Method\u0000html/M_Grpc_Core_CallOptions_WithHeaders.htm\u0000128","CallOptions Constructor\u0000html/M_Grpc_Core_CallOptions__ctor.htm\u0000397","Calls.AsyncClientStreamingCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm\u0000283","Calls.AsyncDuplexStreamingCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm\u0000305","Calls.AsyncServerStreamingCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm\u0000297","Calls.AsyncUnaryCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm\u0000278","Calls.BlockingUnaryCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm\u0000258","ChannelOption Constructor (String, Int32)\u0000html/M_Grpc_Core_ChannelOption__ctor.htm\u0000137","ChannelOption Constructor (String, String)\u0000html/M_Grpc_Core_ChannelOption__ctor_1.htm\u0000139","Channel.ConnectAsync Method\u0000html/M_Grpc_Core_Channel_ConnectAsync.htm\u0000229","Channel.ShutdownAsync Method\u0000html/M_Grpc_Core_Channel_ShutdownAsync.htm\u0000102","Channel.WaitForStateChangedAsync Method\u0000html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm\u0000266","Channel Constructor (String, Credentials, IEnumerable(ChannelOption))\u0000html/M_Grpc_Core_Channel__ctor.htm\u0000252","Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))\u0000html/M_Grpc_Core_Channel__ctor_1.htm\u0000270","ClientBase.CreateCall(TRequest, TResponse) Method\u0000html/M_Grpc_Core_ClientBase_CreateCall__2.htm\u0000283","ClientBase Constructor\u0000html/M_Grpc_Core_ClientBase__ctor.htm\u0000110","ContextPropagationOptions Constructor\u0000html/M_Grpc_Core_ContextPropagationOptions__ctor.htm\u0000205","Credentials Constructor\u0000html/M_Grpc_Core_Credentials__ctor.htm\u000076","GrpcEnvironment.SetLogger Method\u0000html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm\u0000139","IAsyncStreamWriter(T).WriteAsync Method\u0000html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm\u0000125","IClientStreamWriter(T).CompleteAsync Method\u0000html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm\u0000101","KeyCertificatePair Constructor\u0000html/M_Grpc_Core_KeyCertificatePair__ctor.htm\u0000139","ConsoleLogger.Debug Method\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm\u0000238","ConsoleLogger.Error Method (Exception, String, Object[])\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm\u0000320","ConsoleLogger.Error Method (String, Object[])\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm\u0000246","ConsoleLogger.ForType(T) Method\u0000html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm\u0000147","ConsoleLogger.Info Method\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm\u0000238","ConsoleLogger.Warning Method (Exception, String, Object[])\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm\u0000320","ConsoleLogger.Warning Method (String, Object[])\u0000html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm\u0000246","ConsoleLogger Constructor\u0000html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm\u000081","ILogger.Debug Method\u0000html/M_Grpc_Core_Logging_ILogger_Debug.htm\u0000202","ILogger.Error Method (Exception, String, Object[])\u0000html/M_Grpc_Core_Logging_ILogger_Error.htm\u0000276","ILogger.Error Method (String, Object[])\u0000html/M_Grpc_Core_Logging_ILogger_Error_1.htm\u0000210","ILogger.ForType(T) Method\u0000html/M_Grpc_Core_Logging_ILogger_ForType__1.htm\u0000127","ILogger.Info Method\u0000html/M_Grpc_Core_Logging_ILogger_Info.htm\u0000202","ILogger.Warning Method (Exception, String, Object[])\u0000html/M_Grpc_Core_Logging_ILogger_Warning.htm\u0000276","ILogger.Warning Method (String, Object[])\u0000html/M_Grpc_Core_Logging_ILogger_Warning_1.htm\u0000210","Marshallers.Create(T) Method\u0000html/M_Grpc_Core_Marshallers_Create__1.htm\u0000391","Marshaller(T) Constructor\u0000html/M_Grpc_Core_Marshaller_1__ctor.htm\u0000229","Metadata.Add Method (Metadata.Entry)\u0000html/M_Grpc_Core_Metadata_Add.htm\u0000172","Metadata.Add Method (String, Byte[])\u0000html/M_Grpc_Core_Metadata_Add_1.htm\u0000220","Metadata.Add Method (String, String)\u0000html/M_Grpc_Core_Metadata_Add_2.htm\u0000199","Metadata.Clear Method\u0000html/M_Grpc_Core_Metadata_Clear.htm\u0000102","Metadata.Contains Method\u0000html/M_Grpc_Core_Metadata_Contains.htm\u0000173","Metadata.CopyTo Method\u0000html/M_Grpc_Core_Metadata_CopyTo.htm\u0000254","Metadata.Entry.ToString Method\u0000html/M_Grpc_Core_Metadata_Entry_ToString.htm\u0000107","Metadata.Entry Constructor (String, Byte[])\u0000html/M_Grpc_Core_Metadata_Entry__ctor.htm\u0000174","Metadata.Entry Constructor (String, String)\u0000html/M_Grpc_Core_Metadata_Entry__ctor_1.htm\u0000165","Metadata.GetEnumerator Method\u0000html/M_Grpc_Core_Metadata_GetEnumerator.htm\u0000143","Metadata.IndexOf Method\u0000html/M_Grpc_Core_Metadata_IndexOf.htm\u0000173","Metadata.Insert Method\u0000html/M_Grpc_Core_Metadata_Insert.htm\u0000229","Metadata.Remove Method\u0000html/M_Grpc_Core_Metadata_Remove.htm\u0000173","Metadata.RemoveAt Method\u0000html/M_Grpc_Core_Metadata_RemoveAt.htm\u0000155","Metadata Constructor\u0000html/M_Grpc_Core_Metadata__ctor.htm\u000076","Method(TRequest, TResponse) Constructor\u0000html/M_Grpc_Core_Method_2__ctor.htm\u0000272","RpcException Constructor (Status)\u0000html/M_Grpc_Core_RpcException__ctor.htm\u0000111","RpcException Constructor (Status, String)\u0000html/M_Grpc_Core_RpcException__ctor_1.htm\u0000145","ServerCallContext.CreatePropagationToken Method\u0000html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm\u0000177","ServerCallContext.WriteResponseHeadersAsync Method\u0000html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm\u0000174","ServerCredentials Constructor\u0000html/M_Grpc_Core_ServerCredentials__ctor.htm\u000076","ServerPort Constructor\u0000html/M_Grpc_Core_ServerPort__ctor.htm\u0000189","ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm\u0000310","ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm\u0000310","ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm\u0000310","ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm\u0000314","ServerServiceDefinition.Builder.Build Method\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm\u000095","ServerServiceDefinition.Builder Constructor\u0000html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm\u0000105","ServerServiceDefinition.CreateBuilder Method\u0000html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm\u0000131","Server.KillAsync Method\u0000html/M_Grpc_Core_Server_KillAsync.htm\u0000102","Server.ServerPortCollection.Add Method (ServerPort)\u0000html/M_Grpc_Core_Server_ServerPortCollection_Add.htm\u0000168","Server.ServerPortCollection.Add Method (String, Int32, ServerCredentials)\u0000html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm\u0000212","Server.ServerPortCollection.GetEnumerator Method\u0000html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm\u0000131","Server.ServiceDefinitionCollection.Add Method\u0000html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm\u0000153","Server.ServiceDefinitionCollection.GetEnumerator Method\u0000html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm\u0000131","Server.ShutdownAsync Method\u0000html/M_Grpc_Core_Server_ShutdownAsync.htm\u0000109","Server.Start Method\u0000html/M_Grpc_Core_Server_Start.htm\u000076","Server Constructor\u0000html/M_Grpc_Core_Server__ctor.htm\u0000155","SslCredentials Constructor\u0000html/M_Grpc_Core_SslCredentials__ctor.htm\u0000103","SslCredentials Constructor (String)\u0000html/M_Grpc_Core_SslCredentials__ctor_1.htm\u0000135","SslCredentials Constructor (String, KeyCertificatePair)\u0000html/M_Grpc_Core_SslCredentials__ctor_2.htm\u0000145","SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))\u0000html/M_Grpc_Core_SslServerCredentials__ctor.htm\u0000152","SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)\u0000html/M_Grpc_Core_SslServerCredentials__ctor_1.htm\u0000213","Status.ToString Method\u0000html/M_Grpc_Core_Status_ToString.htm\u0000104","Status Constructor\u0000html/M_Grpc_Core_Status__ctor.htm\u0000130","AsyncStreamExtensions.ForEachAsync(T) Method\u0000html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm\u0000440","AsyncStreamExtensions.ToListAsync(T) Method\u0000html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm\u0000358","AsyncStreamExtensions.WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)\u0000html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm\u0000541","AsyncStreamExtensions.WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))\u0000html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm\u0000428","BenchmarkUtil.RunBenchmark Method\u0000html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm\u0000243","Preconditions.CheckArgument Method (Boolean)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm\u0000115","Preconditions.CheckArgument Method (Boolean, String)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm\u0000150","Preconditions.CheckNotNull(T) Method (T)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm\u0000169","Preconditions.CheckNotNull(T) Method (T, String)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm\u0000202","Preconditions.CheckState Method (Boolean)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckState.htm\u0000115","Preconditions.CheckState Method (Boolean, String)\u0000html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm\u0000150","WriteOptions Constructor\u0000html/M_Grpc_Core_WriteOptions__ctor.htm\u0000130","Grpc.Auth Namespace\u0000html/N_Grpc_Auth.htm\u000066","Grpc.Core Namespace\u0000html/N_Grpc_Core.htm\u0000823","Grpc.Core.Logging Namespace\u0000html/N_Grpc_Core_Logging.htm\u000039","Grpc.Core.Utils Namespace\u0000html/N_Grpc_Core_Utils.htm\u000048","CallInvocationDetails(TRequest, TResponse) Constructor\u0000html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm\u0000116","ChannelOption Constructor\u0000html/Overload_Grpc_Core_ChannelOption__ctor.htm\u000048","Channel Constructor\u0000html/Overload_Grpc_Core_Channel__ctor.htm\u000079","ConsoleLogger.Error Method\u0000html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm\u000054","ConsoleLogger.Warning Method\u0000html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm\u000054","ILogger.Error Method\u0000html/Overload_Grpc_Core_Logging_ILogger_Error.htm\u000054","ILogger.Warning Method\u0000html/Overload_Grpc_Core_Logging_ILogger_Warning.htm\u000054","Metadata.Add Method\u0000html/Overload_Grpc_Core_Metadata_Add.htm\u000036","Entry Constructor\u0000html/Overload_Grpc_Core_Metadata_Entry__ctor.htm\u000062","RpcException Constructor\u0000html/Overload_Grpc_Core_RpcException__ctor.htm\u000048","Builder.AddMethod Method\u0000html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm\u0000130","ServerPortCollection.Add Method\u0000html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm\u000086","SslCredentials Constructor\u0000html/Overload_Grpc_Core_SslCredentials__ctor.htm\u000082","SslServerCredentials Constructor\u0000html/Overload_Grpc_Core_SslServerCredentials__ctor.htm\u000064","AsyncStreamExtensions.WriteAllAsync Method\u0000html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm\u000076","Preconditions.CheckArgument Method\u0000html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm\u000047","Preconditions.CheckNotNull Method\u0000html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm\u000048","Preconditions.CheckState Method\u0000html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm\u000047","AsyncClientStreamingCall(TRequest, TResponse) Properties\u0000html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm\u000058","AsyncDuplexStreamingCall(TRequest, TResponse) Properties\u0000html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm\u000061","AsyncServerStreamingCall(TResponse) Properties\u0000html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm\u000046","AsyncUnaryCall(TResponse) Properties\u0000html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm\u000043","CallInvocationDetails(TRequest, TResponse) Properties\u0000html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm\u000083","CallOptions Properties\u0000html/Properties_T_Grpc_Core_CallOptions.htm\u000072","Channel Properties\u0000html/Properties_T_Grpc_Core_Channel.htm\u000057","ChannelOption Properties\u0000html/Properties_T_Grpc_Core_ChannelOption.htm\u000063","ClientBase Properties\u0000html/Properties_T_Grpc_Core_ClientBase.htm\u0000108","ContextPropagationOptions Properties\u0000html/Properties_T_Grpc_Core_ContextPropagationOptions.htm\u000056","Credentials Properties\u0000html/Properties_T_Grpc_Core_Credentials.htm\u000049","GrpcEnvironment Properties\u0000html/Properties_T_Grpc_Core_GrpcEnvironment.htm\u000036","IAsyncStreamReader(T) Properties\u0000html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm\u000040","IAsyncStreamWriter(T) Properties\u0000html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm\u000064","IClientStreamWriter(T) Properties\u0000html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm\u000072","IHasWriteOptions Properties\u0000html/Properties_T_Grpc_Core_IHasWriteOptions.htm\u000035","IMethod Properties\u0000html/Properties_T_Grpc_Core_IMethod.htm\u000080","IServerStreamWriter(T) Properties\u0000html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm\u000072","KeyCertificatePair Properties\u0000html/Properties_T_Grpc_Core_KeyCertificatePair.htm\u000039","Marshallers Properties\u0000html/Properties_T_Grpc_Core_Marshallers.htm\u000041","Marshaller(T) Properties\u0000html/Properties_T_Grpc_Core_Marshaller_1.htm\u000043","Metadata Properties\u0000html/Properties_T_Grpc_Core_Metadata.htm\u000030","Entry Properties\u0000html/Properties_T_Grpc_Core_Metadata_Entry.htm\u000068","Method(TRequest, TResponse) Properties\u0000html/Properties_T_Grpc_Core_Method_2.htm\u0000109","RpcException Properties\u0000html/Properties_T_Grpc_Core_RpcException.htm\u0000203","Server Properties\u0000html/Properties_T_Grpc_Core_Server.htm\u000087","ServerCallContext Properties\u0000html/Properties_T_Grpc_Core_ServerCallContext.htm\u0000135","ServerCredentials Properties\u0000html/Properties_T_Grpc_Core_ServerCredentials.htm\u000050","ServerPort Properties\u0000html/Properties_T_Grpc_Core_ServerPort.htm\u000031","SslCredentials Properties\u0000html/Properties_T_Grpc_Core_SslCredentials.htm\u000056","SslServerCredentials Properties\u0000html/Properties_T_Grpc_Core_SslServerCredentials.htm\u000052","Status Properties\u0000html/Properties_T_Grpc_Core_Status.htm\u000050","WriteOptions Properties\u0000html/Properties_T_Grpc_Core_WriteOptions.htm\u000033","AsyncClientStreamingCall(TRequest, TResponse).RequestStream Property\u0000html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm\u0000126","AsyncClientStreamingCall(TRequest, TResponse).ResponseAsync Property\u0000html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm\u0000123","AsyncClientStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property\u0000html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm\u0000135","AsyncDuplexStreamingCall(TRequest, TResponse).RequestStream Property\u0000html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm\u0000126","AsyncDuplexStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property\u0000html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm\u0000135","AsyncDuplexStreamingCall(TRequest, TResponse).ResponseStream Property\u0000html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm\u0000126","AsyncServerStreamingCall(TResponse).ResponseHeadersAsync Property\u0000html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm\u0000130","AsyncServerStreamingCall(TResponse).ResponseStream Property\u0000html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm\u0000121","AsyncUnaryCall(TResponse).ResponseAsync Property\u0000html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm\u0000118","AsyncUnaryCall(TResponse).ResponseHeadersAsync Property\u0000html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm\u0000130","CallInvocationDetails(TRequest, TResponse).Channel Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm\u0000109","CallInvocationDetails(TRequest, TResponse).Host Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_Host.htm\u0000107","CallInvocationDetails(TRequest, TResponse).Method Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_Method.htm\u0000110","CallInvocationDetails(TRequest, TResponse).Options Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_Options.htm\u0000103","CallInvocationDetails(TRequest, TResponse).RequestMarshaller Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm\u0000126","CallInvocationDetails(TRequest, TResponse).ResponseMarshaller Property\u0000html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm\u0000126","CallOptions.CancellationToken Property\u0000html/P_Grpc_Core_CallOptions_CancellationToken.htm\u0000101","CallOptions.Deadline Property\u0000html/P_Grpc_Core_CallOptions_Deadline.htm\u0000121","CallOptions.Headers Property\u0000html/P_Grpc_Core_CallOptions_Headers.htm\u0000105","CallOptions.PropagationToken Property\u0000html/P_Grpc_Core_CallOptions_PropagationToken.htm\u0000102","CallOptions.WriteOptions Property\u0000html/P_Grpc_Core_CallOptions_WriteOptions.htm\u0000105","ChannelOption.IntValue Property\u0000html/P_Grpc_Core_ChannelOption_IntValue.htm\u000099","ChannelOption.Name Property\u0000html/P_Grpc_Core_ChannelOption_Name.htm\u0000103","ChannelOption.StringValue Property\u0000html/P_Grpc_Core_ChannelOption_StringValue.htm\u0000103","ChannelOption.Type Property\u0000html/P_Grpc_Core_ChannelOption_Type.htm\u0000105","Channel.ResolvedTarget Property\u0000html/P_Grpc_Core_Channel_ResolvedTarget.htm\u0000105","Channel.State Property\u0000html/P_Grpc_Core_Channel_State.htm\u000099","Channel.Target Property\u0000html/P_Grpc_Core_Channel_Target.htm\u0000104","ClientBase.Channel Property\u0000html/P_Grpc_Core_ClientBase_Channel.htm\u0000101","ClientBase.HeaderInterceptor Property\u0000html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm\u0000141","ClientBase.Host Property\u0000html/P_Grpc_Core_ClientBase_Host.htm\u0000155","ContextPropagationOptions.IsPropagateCancellation Property\u0000html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm\u0000105","ContextPropagationOptions.IsPropagateDeadline Property\u0000html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm\u0000104","Credentials.Insecure Property\u0000html/P_Grpc_Core_Credentials_Insecure.htm\u0000120","GrpcEnvironment.Logger Property\u0000html/P_Grpc_Core_GrpcEnvironment_Logger.htm\u0000110","IAsyncStreamWriter(T).WriteOptions Property\u0000html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm\u0000141","IHasWriteOptions.WriteOptions Property\u0000html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm\u0000114","IMethod.FullName Property\u0000html/P_Grpc_Core_IMethod_FullName.htm\u0000112","IMethod.Name Property\u0000html/P_Grpc_Core_IMethod_Name.htm\u000098","IMethod.ServiceName Property\u0000html/P_Grpc_Core_IMethod_ServiceName.htm\u0000102","IMethod.Type Property\u0000html/P_Grpc_Core_IMethod_Type.htm\u000093","KeyCertificatePair.CertificateChain Property\u0000html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm\u0000100","KeyCertificatePair.PrivateKey Property\u0000html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm\u0000100","Marshallers.StringMarshaller Property\u0000html/P_Grpc_Core_Marshallers_StringMarshaller.htm\u0000139","Marshaller(T).Deserializer Property\u0000html/P_Grpc_Core_Marshaller_1_Deserializer.htm\u0000159","Marshaller(T).Serializer Property\u0000html/P_Grpc_Core_Marshaller_1_Serializer.htm\u0000155","Metadata.Count Property\u0000html/P_Grpc_Core_Metadata_Count.htm\u0000120","Metadata.Entry.IsBinary Property\u0000html/P_Grpc_Core_Metadata_Entry_IsBinary.htm\u0000104","Metadata.Entry.Key Property\u0000html/P_Grpc_Core_Metadata_Entry_Key.htm\u0000103","Metadata.Entry.Value Property\u0000html/P_Grpc_Core_Metadata_Entry_Value.htm\u0000106","Metadata.Entry.ValueBytes Property\u0000html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm\u0000125","Metadata.IsReadOnly Property\u0000html/P_Grpc_Core_Metadata_IsReadOnly.htm\u0000120","Metadata.Item Property\u0000html/P_Grpc_Core_Metadata_Item.htm\u0000185","Method(TRequest, TResponse).FullName Property\u0000html/P_Grpc_Core_Method_2_FullName.htm\u0000137","Method(TRequest, TResponse).Name Property\u0000html/P_Grpc_Core_Method_2_Name.htm\u0000123","Method(TRequest, TResponse).RequestMarshaller Property\u0000html/P_Grpc_Core_Method_2_RequestMarshaller.htm\u0000127","Method(TRequest, TResponse).ResponseMarshaller Property\u0000html/P_Grpc_Core_Method_2_ResponseMarshaller.htm\u0000127","Method(TRequest, TResponse).ServiceName Property\u0000html/P_Grpc_Core_Method_2_ServiceName.htm\u0000127","Method(TRequest, TResponse).Type Property\u0000html/P_Grpc_Core_Method_2_Type.htm\u0000118","RpcException.Status Property\u0000html/P_Grpc_Core_RpcException_Status.htm\u000097","ServerCallContext.CancellationToken Property\u0000html/P_Grpc_Core_ServerCallContext_CancellationToken.htm\u000099","ServerCallContext.Deadline Property\u0000html/P_Grpc_Core_ServerCallContext_Deadline.htm\u000096","ServerCallContext.Host Property\u0000html/P_Grpc_Core_ServerCallContext_Host.htm\u0000103","ServerCallContext.Method Property\u0000html/P_Grpc_Core_ServerCallContext_Method.htm\u0000103","ServerCallContext.Peer Property\u0000html/P_Grpc_Core_ServerCallContext_Peer.htm\u0000104","ServerCallContext.RequestHeaders Property\u0000html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm\u0000101","ServerCallContext.ResponseTrailers Property\u0000html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm\u0000105","ServerCallContext.Status Property\u0000html/P_Grpc_Core_ServerCallContext_Status.htm\u0000116","ServerCallContext.WriteOptions Property\u0000html/P_Grpc_Core_ServerCallContext_WriteOptions.htm\u0000147","ServerCredentials.Insecure Property\u0000html/P_Grpc_Core_ServerCredentials_Insecure.htm\u0000121","ServerPort.BoundPort Property\u0000html/P_Grpc_Core_ServerPort_BoundPort.htm\u0000126","ServerPort.Credentials Property\u0000html/P_Grpc_Core_ServerPort_Credentials.htm\u0000114","ServerPort.Host Property\u0000html/P_Grpc_Core_ServerPort_Host.htm\u0000113","ServerPort.Port Property\u0000html/P_Grpc_Core_ServerPort_Port.htm\u0000109","Server.Ports Property\u0000html/P_Grpc_Core_Server_Ports.htm\u0000125","Server.Services Property\u0000html/P_Grpc_Core_Server_Services.htm\u0000126","Server.ShutdownTask Property\u0000html/P_Grpc_Core_Server_ShutdownTask.htm\u0000103","SslCredentials.KeyCertificatePair Property\u0000html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm\u0000114","SslCredentials.RootCertificates Property\u0000html/P_Grpc_Core_SslCredentials_RootCertificates.htm\u0000103","SslServerCredentials.ForceClientAuthentication Property\u0000html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm\u0000103","SslServerCredentials.KeyCertificatePairs Property\u0000html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm\u0000126","SslServerCredentials.RootCertificates Property\u0000html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm\u0000101","Status.Detail Property\u0000html/P_Grpc_Core_Status_Detail.htm\u000099","Status.StatusCode Property\u0000html/P_Grpc_Core_Status_StatusCode.htm\u0000108","WriteOptions.Flags Property\u0000html/P_Grpc_Core_WriteOptions_Flags.htm\u000096","Namespaces\u0000html/R_Project_Documentation.htm\u000084","AuthInterceptors Class\u0000html/T_Grpc_Auth_AuthInterceptors.htm\u0000161","AsyncClientStreamingCall(TRequest, TResponse) Class\u0000html/T_Grpc_Core_AsyncClientStreamingCall_2.htm\u0000362","AsyncDuplexStreamingCall(TRequest, TResponse) Class\u0000html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm\u0000359","AsyncServerStreamingCall(TResponse) Class\u0000html/T_Grpc_Core_AsyncServerStreamingCall_1.htm\u0000320","AsyncUnaryCall(TResponse) Class\u0000html/T_Grpc_Core_AsyncUnaryCall_1.htm\u0000333","CallInvocationDetails(TRequest, TResponse) Structure\u0000html/T_Grpc_Core_CallInvocationDetails_2.htm\u0000377","CallOptions Structure\u0000html/T_Grpc_Core_CallOptions.htm\u0000282","Calls Class\u0000html/T_Grpc_Core_Calls.htm\u0000262","Channel Class\u0000html/T_Grpc_Core_Channel.htm\u0000461","ChannelOption Class\u0000html/T_Grpc_Core_ChannelOption.htm\u0000244","ChannelOptions Class\u0000html/T_Grpc_Core_ChannelOptions.htm\u0000187","ChannelOption.OptionType Enumeration\u0000html/T_Grpc_Core_ChannelOption_OptionType.htm\u000082","ChannelState Enumeration\u0000html/T_Grpc_Core_ChannelState.htm\u0000113","ClientBase Class\u0000html/T_Grpc_Core_ClientBase.htm\u0000320","ClientStreamingServerMethod(TRequest, TResponse) Delegate\u0000html/T_Grpc_Core_ClientStreamingServerMethod_2.htm\u0000240","CompressionLevel Enumeration\u0000html/T_Grpc_Core_CompressionLevel.htm\u000089","ContextPropagationOptions Class\u0000html/T_Grpc_Core_ContextPropagationOptions.htm\u0000258","ContextPropagationToken Class\u0000html/T_Grpc_Core_ContextPropagationToken.htm\u0000268","Credentials Class\u0000html/T_Grpc_Core_Credentials.htm\u0000257","DuplexStreamingServerMethod(TRequest, TResponse) Delegate\u0000html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm\u0000266","GrpcEnvironment Class\u0000html/T_Grpc_Core_GrpcEnvironment.htm\u0000227","HeaderInterceptor Delegate\u0000html/T_Grpc_Core_HeaderInterceptor.htm\u0000155","IAsyncStreamReader(T) Interface\u0000html/T_Grpc_Core_IAsyncStreamReader_1.htm\u0000234","IAsyncStreamWriter(T) Interface\u0000html/T_Grpc_Core_IAsyncStreamWriter_1.htm\u0000157","IClientStreamWriter(T) Interface\u0000html/T_Grpc_Core_IClientStreamWriter_1.htm\u0000260","IHasWriteOptions Interface\u0000html/T_Grpc_Core_IHasWriteOptions.htm\u000089","IMethod Interface\u0000html/T_Grpc_Core_IMethod.htm\u0000133","IServerStreamWriter(T) Interface\u0000html/T_Grpc_Core_IServerStreamWriter_1.htm\u0000245","KeyCertificatePair Class\u0000html/T_Grpc_Core_KeyCertificatePair.htm\u0000197","ConsoleLogger Class\u0000html/T_Grpc_Core_Logging_ConsoleLogger.htm\u0000320","ILogger Interface\u0000html/T_Grpc_Core_Logging_ILogger.htm\u0000168","Marshallers Class\u0000html/T_Grpc_Core_Marshallers.htm\u0000130","Marshaller(T) Class\u0000html/T_Grpc_Core_Marshaller_1.htm\u0000273","Metadata Class\u0000html/T_Grpc_Core_Metadata.htm\u0000421","Metadata.Entry Structure\u0000html/T_Grpc_Core_Metadata_Entry.htm\u0000240","MethodType Enumeration\u0000html/T_Grpc_Core_MethodType.htm\u0000126","Method(TRequest, TResponse) Class\u0000html/T_Grpc_Core_Method_2.htm\u0000358","RpcException Class\u0000html/T_Grpc_Core_RpcException.htm\u0000526","Server Class\u0000html/T_Grpc_Core_Server.htm\u0000344","ServerCallContext Class\u0000html/T_Grpc_Core_ServerCallContext.htm\u0000381","ServerCredentials Class\u0000html/T_Grpc_Core_ServerCredentials.htm\u0000250","ServerPort Class\u0000html/T_Grpc_Core_ServerPort.htm\u0000260","ServerServiceDefinition Class\u0000html/T_Grpc_Core_ServerServiceDefinition.htm\u0000239","ServerServiceDefinition.Builder Class\u0000html/T_Grpc_Core_ServerServiceDefinition_Builder.htm\u0000332","ServerStreamingServerMethod(TRequest, TResponse) Delegate\u0000html/T_Grpc_Core_ServerStreamingServerMethod_2.htm\u0000248","Server.ServerPortCollection Class\u0000html/T_Grpc_Core_Server_ServerPortCollection.htm\u0000312","Server.ServiceDefinitionCollection Class\u0000html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm\u0000278","SslCredentials Class\u0000html/T_Grpc_Core_SslCredentials.htm\u0000274","SslServerCredentials Class\u0000html/T_Grpc_Core_SslServerCredentials.htm\u0000289","Status Structure\u0000html/T_Grpc_Core_Status.htm\u0000235","StatusCode Enumeration\u0000html/T_Grpc_Core_StatusCode.htm\u0000545","UnaryServerMethod(TRequest, TResponse) Delegate\u0000html/T_Grpc_Core_UnaryServerMethod_2.htm\u0000221","AsyncStreamExtensions Class\u0000html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm\u0000211","BenchmarkUtil Class\u0000html/T_Grpc_Core_Utils_BenchmarkUtil.htm\u0000115","Preconditions Class\u0000html/T_Grpc_Core_Utils_Preconditions.htm\u0000177","VersionInfo Class\u0000html/T_Grpc_Core_VersionInfo.htm\u0000111","WriteFlags Enumeration\u0000html/T_Grpc_Core_WriteFlags.htm\u0000148","WriteOptions Class\u0000html/T_Grpc_Core_WriteOptions.htm\u0000230"] \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm b/doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm deleted file mode 100644 index e24bbc2c7e0..00000000000 --- a/doc/ref/csharp/html/html/Events_T_Grpc_Core_RpcException.htm +++ /dev/null @@ -1,3 +0,0 @@ -RpcException Events
    RpcException Events

    The RpcException type exposes the following members.

    Events
    -   - NameDescription
    Protected eventSerializeObjectState
    Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.
    (Inherited from Exception.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm deleted file mode 100644 index 4d26b5f04f8..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Census.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.Census Field
    ChannelOptionsCensus Field
    Enable census for tracing and stats collection

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string Census

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm deleted file mode 100644 index c98e0bf561b..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_DefaultAuthority.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.DefaultAuthority Field
    ChannelOptionsDefaultAuthority Field
    Default authority for calls.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string DefaultAuthority

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm deleted file mode 100644 index 525504f1888..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_Http2InitialSequenceNumber.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.Http2InitialSequenceNumber Field
    ChannelOptionsHttp2InitialSequenceNumber Field
    Initial sequence number for http2 transports

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string Http2InitialSequenceNumber

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm deleted file mode 100644 index 98591f5030c..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxConcurrentStreams.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.MaxConcurrentStreams Field
    ChannelOptionsMaxConcurrentStreams Field
    Maximum number of concurrent incoming streams to allow on a http2 connection

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string MaxConcurrentStreams

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm deleted file mode 100644 index d482ae2f906..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_MaxMessageLength.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.MaxMessageLength Field
    ChannelOptionsMaxMessageLength Field
    Maximum message length that the channel can receive

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string MaxMessageLength

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm deleted file mode 100644 index bcf4a01030a..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_PrimaryUserAgentString.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.PrimaryUserAgentString Field
    ChannelOptionsPrimaryUserAgentString Field
    Primary user agent: goes at the start of the user-agent metadata

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string PrimaryUserAgentString

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm deleted file mode 100644 index 0f940505a70..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SecondaryUserAgentString.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.SecondaryUserAgentString Field
    ChannelOptionsSecondaryUserAgentString Field
    Secondary user agent: goes at the end of the user-agent metadata

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string SecondaryUserAgentString

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm deleted file mode 100644 index ab3b03e3c07..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ChannelOptions_SslTargetNameOverride.htm +++ /dev/null @@ -1,2 +0,0 @@ -ChannelOptions.SslTargetNameOverride Field
    ChannelOptionsSslTargetNameOverride Field
    Override SSL target check. Only to be used for testing.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string SslTargetNameOverride

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm deleted file mode 100644 index 075c75c7698..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ContextPropagationOptions_Default.htm +++ /dev/null @@ -1,4 +0,0 @@ -ContextPropagationOptions.Default Field
    ContextPropagationOptionsDefault Field
    - The context propagation options that will be used by default. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static readonly ContextPropagationOptions Default

    Field Value

    Type: ContextPropagationOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm b/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm deleted file mode 100644 index 9df32974538..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_BinaryHeaderSuffix.htm +++ /dev/null @@ -1,4 +0,0 @@ -Metadata.BinaryHeaderSuffix Field
    MetadataBinaryHeaderSuffix Field
    - All binary headers should have this suffix. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string BinaryHeaderSuffix

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm b/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm deleted file mode 100644 index ed7d4ce5a6d..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_Metadata_Empty.htm +++ /dev/null @@ -1,4 +0,0 @@ -Metadata.Empty Field
    MetadataEmpty Field
    - An read-only instance of metadata containing no entries. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static readonly Metadata Empty

    Field Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm b/doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm deleted file mode 100644 index 4a10061dac8..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_ServerPort_PickUnused.htm +++ /dev/null @@ -1,5 +0,0 @@ -ServerPort.PickUnused Field
    ServerPortPickUnused Field
    - Pass this value as port to have the server choose an unused listening port for you. - Ports added to a server will contain the bound port in their BoundPort property. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const int PickUnused

    Field Value

    Type: Int32
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm b/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm deleted file mode 100644 index a0b6de73aec..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultCancelled.htm +++ /dev/null @@ -1,4 +0,0 @@ -Status.DefaultCancelled Field
    StatusDefaultCancelled Field
    - Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static readonly Status DefaultCancelled

    Field Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm b/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm deleted file mode 100644 index 3b22a57f2c6..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_Status_DefaultSuccess.htm +++ /dev/null @@ -1,4 +0,0 @@ -Status.DefaultSuccess Field
    StatusDefaultSuccess Field
    - Default result of a successful RPC. StatusCode=OK, empty details message. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static readonly Status DefaultSuccess

    Field Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm b/doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm deleted file mode 100644 index 139a5b420c7..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_VersionInfo_CurrentVersion.htm +++ /dev/null @@ -1,4 +0,0 @@ -VersionInfo.CurrentVersion Field
    VersionInfoCurrentVersion Field
    - Current version of gRPC C# -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public const string CurrentVersion

    Field Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm b/doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm deleted file mode 100644 index db74b75c6e4..00000000000 --- a/doc/ref/csharp/html/html/F_Grpc_Core_WriteOptions_Default.htm +++ /dev/null @@ -1,4 +0,0 @@ -WriteOptions.Default Field
    WriteOptionsDefault Field
    - Default write options. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static readonly WriteOptions Default

    Field Value

    Type: WriteOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm deleted file mode 100644 index 8c995989ff2..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ChannelOptions.htm +++ /dev/null @@ -1,3 +0,0 @@ -ChannelOptions Fields
    ChannelOptions Fields

    The ChannelOptions type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberCensus
    Enable census for tracing and stats collection
    Public fieldStatic memberDefaultAuthority
    Default authority for calls.
    Public fieldStatic memberHttp2InitialSequenceNumber
    Initial sequence number for http2 transports
    Public fieldStatic memberMaxConcurrentStreams
    Maximum number of concurrent incoming streams to allow on a http2 connection
    Public fieldStatic memberMaxMessageLength
    Maximum message length that the channel can receive
    Public fieldStatic memberPrimaryUserAgentString
    Primary user agent: goes at the start of the user-agent metadata
    Public fieldStatic memberSecondaryUserAgentString
    Secondary user agent: goes at the end of the user-agent metadata
    Public fieldStatic memberSslTargetNameOverride
    Override SSL target check. Only to be used for testing.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm deleted file mode 100644 index 06d95f38318..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ContextPropagationOptions.htm +++ /dev/null @@ -1,5 +0,0 @@ -ContextPropagationOptions Fields
    ContextPropagationOptions Fields

    The ContextPropagationOptions type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberDefault
    - The context propagation options that will be used by default. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm deleted file mode 100644 index 4949c9f7b06..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Metadata.htm +++ /dev/null @@ -1,7 +0,0 @@ -Metadata Fields
    Metadata Fields

    The Metadata type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberBinaryHeaderSuffix
    - All binary headers should have this suffix. -
    Public fieldStatic memberEmpty
    - An read-only instance of metadata containing no entries. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm deleted file mode 100644 index 6c8b60e2094..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_ServerPort.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerPort Fields
    ServerPort Fields

    The ServerPort type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberPickUnused
    - Pass this value as port to have the server choose an unused listening port for you. - Ports added to a server will contain the bound port in their BoundPort property. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm deleted file mode 100644 index 824fb063678..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_Status.htm +++ /dev/null @@ -1,7 +0,0 @@ -Status Fields
    Status Fields

    The Status type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberDefaultCancelled
    - Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. -
    Public fieldStatic memberDefaultSuccess
    - Default result of a successful RPC. StatusCode=OK, empty details message. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm deleted file mode 100644 index 6d3d981b8d5..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_VersionInfo.htm +++ /dev/null @@ -1,5 +0,0 @@ -VersionInfo Fields
    VersionInfo Fields

    The VersionInfo type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberCurrentVersion
    - Current version of gRPC C# -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm b/doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm deleted file mode 100644 index cf412e42ab2..00000000000 --- a/doc/ref/csharp/html/html/Fields_T_Grpc_Core_WriteOptions.htm +++ /dev/null @@ -1,5 +0,0 @@ -WriteOptions Fields
    WriteOptions Fields

    The WriteOptions type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberDefault
    - Default write options. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm b/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm deleted file mode 100644 index 5e5580b6993..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromAccessToken.htm +++ /dev/null @@ -1,12 +0,0 @@ -AuthInterceptors.FromAccessToken Method
    AuthInterceptorsFromAccessToken Method
    - Creates OAuth2 interceptor that will use given access token as authorization. -

    Namespace: Grpc.Auth
    Assembly: Grpc.Auth (in Grpc.Auth.dll) Version: 0.7.0.0
    Syntax
    public static HeaderInterceptor FromAccessToken(
    -	string accessToken
    -)

    Parameters

    accessToken
    Type: SystemString
    OAuth2 access token.

    Return Value

    Type: HeaderInterceptor
    The header interceptor.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm b/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm deleted file mode 100644 index 5ec5f6e5dfa..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Auth_AuthInterceptors_FromCredential.htm +++ /dev/null @@ -1,13 +0,0 @@ -AuthInterceptors.FromCredential Method
    AuthInterceptorsFromCredential Method
    - Creates interceptor that will obtain access token from any credential type that implements - ITokenAccess. (e.g. GoogleCredential). -

    Namespace: Grpc.Auth
    Assembly: Grpc.Auth (in Grpc.Auth.dll) Version: 0.7.0.0
    Syntax
    public static HeaderInterceptor FromCredential(
    -	ITokenAccess credential
    -)

    Parameters

    credential
    Type: ITokenAccess
    The credential to use to obtain access tokens.

    Return Value

    Type: HeaderInterceptor
    The header interceptor.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm deleted file mode 100644 index 1ef25e1fb5c..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_Dispose.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).Dispose Method
    AsyncClientStreamingCallTRequest, TResponseDispose Method
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Dispose()

    Implements

    IDisposableDispose
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm deleted file mode 100644 index 59b2ffb9b64..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetAwaiter.htm +++ /dev/null @@ -1,5 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).GetAwaiter Method
    AsyncClientStreamingCallTRequest, TResponseGetAwaiter Method
    - Allows awaiting this object directly. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public TaskAwaiter<TResponse> GetAwaiter()

    Return Value

    Type: TaskAwaiterTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm deleted file mode 100644 index bb18e7fa655..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetStatus.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).GetStatus Method
    AsyncClientStreamingCallTRequest, TResponseGetStatus Method
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status GetStatus()

    Return Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm deleted file mode 100644 index c6d416d10ca..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncClientStreamingCall_2_GetTrailers.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).GetTrailers Method
    AsyncClientStreamingCallTRequest, TResponseGetTrailers Method
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata GetTrailers()

    Return Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm deleted file mode 100644 index e00bef6d5e4..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_Dispose.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).Dispose Method
    AsyncDuplexStreamingCallTRequest, TResponseDispose Method
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Dispose()

    Implements

    IDisposableDispose
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm deleted file mode 100644 index 07273698916..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetStatus.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).GetStatus Method
    AsyncDuplexStreamingCallTRequest, TResponseGetStatus Method
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status GetStatus()

    Return Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm deleted file mode 100644 index 89d68049ecc..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncDuplexStreamingCall_2_GetTrailers.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).GetTrailers Method
    AsyncDuplexStreamingCallTRequest, TResponseGetTrailers Method
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata GetTrailers()

    Return Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm deleted file mode 100644 index 5139add0d7b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_Dispose.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncServerStreamingCall(TResponse).Dispose Method
    AsyncServerStreamingCallTResponseDispose Method
    - Provides means to cleanup after the call. - If the call has already finished normally (response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Dispose()

    Implements

    IDisposableDispose
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm deleted file mode 100644 index 03fe3080cda..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetStatus.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncServerStreamingCall(TResponse).GetStatus Method
    AsyncServerStreamingCallTResponseGetStatus Method
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status GetStatus()

    Return Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm deleted file mode 100644 index 052ede6ed8e..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncServerStreamingCall_1_GetTrailers.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncServerStreamingCall(TResponse).GetTrailers Method
    AsyncServerStreamingCallTResponseGetTrailers Method
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata GetTrailers()

    Return Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm deleted file mode 100644 index e056b43ce8b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_Dispose.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncUnaryCall(TResponse).Dispose Method
    AsyncUnaryCallTResponseDispose Method
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Dispose()

    Implements

    IDisposableDispose
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm deleted file mode 100644 index 09e8502442b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetAwaiter.htm +++ /dev/null @@ -1,5 +0,0 @@ -AsyncUnaryCall(TResponse).GetAwaiter Method
    AsyncUnaryCallTResponseGetAwaiter Method
    - Allows awaiting this object directly. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public TaskAwaiter<TResponse> GetAwaiter()

    Return Value

    Type: TaskAwaiterTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm deleted file mode 100644 index 9f2385361a9..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetStatus.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncUnaryCall(TResponse).GetStatus Method
    AsyncUnaryCallTResponseGetStatus Method
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status GetStatus()

    Return Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm b/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm deleted file mode 100644 index d86cdb243d0..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_AsyncUnaryCall_1_GetTrailers.htm +++ /dev/null @@ -1,6 +0,0 @@ -AsyncUnaryCall(TResponse).GetTrailers Method
    AsyncUnaryCallTResponseGetTrailers Method
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata GetTrailers()

    Return Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm deleted file mode 100644 index 7d004666de8..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2_WithOptions.htm +++ /dev/null @@ -1,13 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).WithOptions Method
    CallInvocationDetailsTRequest, TResponseWithOptions Method

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallInvocationDetails<TRequest, TResponse> WithOptions(
    -	CallOptions options
    -)

    Parameters

    options
    Type: Grpc.CoreCallOptions

    [Missing <param name="options"/> documentation for "M:Grpc.Core.CallInvocationDetails`2.WithOptions(Grpc.Core.CallOptions)"]

    Return Value

    Type: CallInvocationDetailsTRequest, TResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm deleted file mode 100644 index 8cf5135f02b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor.htm +++ /dev/null @@ -1,19 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), CallOptions)
    CallInvocationDetailsTRequest, TResponse Constructor (Channel, MethodTRequest, TResponse, CallOptions)

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallInvocationDetails(
    -	Channel channel,
    -	Method<TRequest, TResponse> method,
    -	CallOptions options
    -)

    Parameters

    channel
    Type: Grpc.CoreChannel
    Channel to use for this call.
    method
    Type: Grpc.CoreMethodTRequest, TResponse
    Method to call.
    options
    Type: Grpc.CoreCallOptions
    Call options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm deleted file mode 100644 index 73be15b634f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_1.htm +++ /dev/null @@ -1,23 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Constructor (Channel, Method(TRequest, TResponse), String, CallOptions)
    CallInvocationDetailsTRequest, TResponse Constructor (Channel, MethodTRequest, TResponse, String, CallOptions)

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallInvocationDetails(
    -	Channel channel,
    -	Method<TRequest, TResponse> method,
    -	string host,
    -	CallOptions options
    -)

    Parameters

    channel
    Type: Grpc.CoreChannel
    Channel to use for this call.
    method
    Type: Grpc.CoreMethodTRequest, TResponse
    Method to call.
    host
    Type: SystemString
    Host that contains the method. if null, default host will be used.
    options
    Type: Grpc.CoreCallOptions
    Call options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm deleted file mode 100644 index 9f001cd3816..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallInvocationDetails_2__ctor_2.htm +++ /dev/null @@ -1,31 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Constructor (Channel, String, String, Marshaller(TRequest), Marshaller(TResponse), CallOptions)
    CallInvocationDetailsTRequest, TResponse Constructor (Channel, String, String, MarshallerTRequest, MarshallerTResponse, CallOptions)

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallInvocationDetails(
    -	Channel channel,
    -	string method,
    -	string host,
    -	Marshaller<TRequest> requestMarshaller,
    -	Marshaller<TResponse> responseMarshaller,
    -	CallOptions options
    -)

    Parameters

    channel
    Type: Grpc.CoreChannel
    Channel to use for this call.
    method
    Type: SystemString
    Qualified method name.
    host
    Type: SystemString
    Host that contains the method.
    requestMarshaller
    Type: Grpc.CoreMarshallerTRequest
    Request marshaller.
    responseMarshaller
    Type: Grpc.CoreMarshallerTResponse
    Response marshaller.
    options
    Type: Grpc.CoreCallOptions
    Call options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm deleted file mode 100644 index f1ac7f7b96f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithCancellationToken.htm +++ /dev/null @@ -1,13 +0,0 @@ -CallOptions.WithCancellationToken Method
    CallOptionsWithCancellationToken Method
    - Returns new instance of CallOptions with - CancellationToken set to the value provided. Values of all other fields are preserved. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallOptions WithCancellationToken(
    -	CancellationToken cancellationToken
    -)

    Parameters

    cancellationToken
    Type: System.ThreadingCancellationToken
    The cancellation token.

    Return Value

    Type: CallOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm deleted file mode 100644 index d5f9d8d7f9b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithDeadline.htm +++ /dev/null @@ -1,13 +0,0 @@ -CallOptions.WithDeadline Method
    CallOptionsWithDeadline Method
    - Returns new instance of CallOptions with - Deadline set to the value provided. Values of all other fields are preserved. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallOptions WithDeadline(
    -	DateTime deadline
    -)

    Parameters

    deadline
    Type: SystemDateTime
    The deadline.

    Return Value

    Type: CallOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm deleted file mode 100644 index 81fad4f8853..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions_WithHeaders.htm +++ /dev/null @@ -1,13 +0,0 @@ -CallOptions.WithHeaders Method
    CallOptionsWithHeaders Method
    - Returns new instance of CallOptions with - Headers set to the value provided. Values of all other fields are preserved. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallOptions WithHeaders(
    -	Metadata headers
    -)

    Parameters

    headers
    Type: Grpc.CoreMetadata
    The headers.

    Return Value

    Type: CallOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm deleted file mode 100644 index e20f11b1e25..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_CallOptions__ctor.htm +++ /dev/null @@ -1,35 +0,0 @@ -CallOptions Constructor
    CallOptions Constructor
    - Creates a new instance of CallOptions struct. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallOptions(
    -	Metadata headers = null,
    -	Nullable<DateTime> deadline = null,
    -	CancellationToken cancellationToken = null,
    -	WriteOptions writeOptions = null,
    -	ContextPropagationToken propagationToken = null
    -)

    Parameters

    headers (Optional)
    Type: Grpc.CoreMetadata
    Headers to be sent with the call.
    deadline (Optional)
    Type: SystemNullableDateTime
    Deadline for the call to finish. null means no deadline.
    cancellationToken (Optional)
    Type: System.ThreadingCancellationToken
    Can be used to request cancellation of the call.
    writeOptions (Optional)
    Type: Grpc.CoreWriteOptions
    Write options that will be used for this call.
    propagationToken (Optional)
    Type: Grpc.CoreContextPropagationToken
    Context propagation token obtained from ServerCallContext.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm deleted file mode 100644 index c24000fc9c4..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncClientStreamingCall__2.htm +++ /dev/null @@ -1,19 +0,0 @@ -Calls.AsyncClientStreamingCall(TRequest, TResponse) Method
    CallsAsyncClientStreamingCallTRequest, TResponse Method
    - Invokes a client streaming call asynchronously. - In client streaming scenario, client sends a stream of requests and server responds with a single response. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static AsyncClientStreamingCall<TRequest, TResponse> AsyncClientStreamingCall<TRequest, TResponse>(
    -	CallInvocationDetails<TRequest, TResponse> call
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    call
    Type: Grpc.CoreCallInvocationDetailsTRequest, TResponse
    The call defintion.

    Type Parameters

    TRequest
    Type of request messages.
    TResponse
    The of response message.

    Return Value

    Type: AsyncClientStreamingCallTRequest, TResponse
    An awaitable call object providing access to the response.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm deleted file mode 100644 index c4d792d6e8f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncDuplexStreamingCall__2.htm +++ /dev/null @@ -1,20 +0,0 @@ -Calls.AsyncDuplexStreamingCall(TRequest, TResponse) Method
    CallsAsyncDuplexStreamingCallTRequest, TResponse Method
    - Invokes a duplex streaming call asynchronously. - In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses. - The response stream is completely independent and both side can be sending messages at the same time. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static AsyncDuplexStreamingCall<TRequest, TResponse> AsyncDuplexStreamingCall<TRequest, TResponse>(
    -	CallInvocationDetails<TRequest, TResponse> call
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    call
    Type: Grpc.CoreCallInvocationDetailsTRequest, TResponse
    The call definition.

    Type Parameters

    TRequest
    Type of request messages.
    TResponse
    Type of reponse messages.

    Return Value

    Type: AsyncDuplexStreamingCallTRequest, TResponse
    A call object providing access to the asynchronous request and response streams.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm deleted file mode 100644 index 9603b037b80..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncServerStreamingCall__2.htm +++ /dev/null @@ -1,23 +0,0 @@ -Calls.AsyncServerStreamingCall(TRequest, TResponse) Method
    CallsAsyncServerStreamingCallTRequest, TResponse Method
    - Invokes a server streaming call asynchronously. - In server streaming scenario, client sends on request and server responds with a stream of responses. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static AsyncServerStreamingCall<TResponse> AsyncServerStreamingCall<TRequest, TResponse>(
    -	CallInvocationDetails<TRequest, TResponse> call,
    -	TRequest req
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    call
    Type: Grpc.CoreCallInvocationDetailsTRequest, TResponse
    The call defintion.
    req
    Type: TRequest
    Request message.

    Type Parameters

    TRequest
    Type of request message.
    TResponse
    The of response messages.

    Return Value

    Type: AsyncServerStreamingCallTResponse
    A call object providing access to the asynchronous response stream.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm deleted file mode 100644 index 550e43a41b0..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_AsyncUnaryCall__2.htm +++ /dev/null @@ -1,22 +0,0 @@ -Calls.AsyncUnaryCall(TRequest, TResponse) Method
    CallsAsyncUnaryCallTRequest, TResponse Method
    - Invokes a simple remote call asynchronously. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static AsyncUnaryCall<TResponse> AsyncUnaryCall<TRequest, TResponse>(
    -	CallInvocationDetails<TRequest, TResponse> call,
    -	TRequest req
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    call
    Type: Grpc.CoreCallInvocationDetailsTRequest, TResponse
    The call defintion.
    req
    Type: TRequest
    Request message.

    Type Parameters

    TRequest
    Type of request message.
    TResponse
    The of response message.

    Return Value

    Type: AsyncUnaryCallTResponse
    An awaitable call object providing access to the response.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm deleted file mode 100644 index 377c0e2fefc..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Calls_BlockingUnaryCall__2.htm +++ /dev/null @@ -1,22 +0,0 @@ -Calls.BlockingUnaryCall(TRequest, TResponse) Method
    CallsBlockingUnaryCallTRequest, TResponse Method
    - Invokes a simple remote call in a blocking fashion. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static TResponse BlockingUnaryCall<TRequest, TResponse>(
    -	CallInvocationDetails<TRequest, TResponse> call,
    -	TRequest req
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    call
    Type: Grpc.CoreCallInvocationDetailsTRequest, TResponse
    The call defintion.
    req
    Type: TRequest
    Request message.

    Type Parameters

    TRequest
    Type of request message.
    TResponse
    The of response message.

    Return Value

    Type: TResponse
    The response.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm deleted file mode 100644 index e3cb76bc699..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -ChannelOption Constructor (String, Int32)
    ChannelOption Constructor (String, Int32)
    - Creates a channel option with an integer value. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ChannelOption(
    -	string name,
    -	int intValue
    -)

    Parameters

    name
    Type: SystemString
    Name.
    intValue
    Type: SystemInt32
    Integer value.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm deleted file mode 100644 index 17810c40a6b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ChannelOption__ctor_1.htm +++ /dev/null @@ -1,15 +0,0 @@ -ChannelOption Constructor (String, String)
    ChannelOption Constructor (String, String)
    - Creates a channel option with a string value. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ChannelOption(
    -	string name,
    -	string stringValue
    -)

    Parameters

    name
    Type: SystemString
    Name.
    stringValue
    Type: SystemString
    String value.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm deleted file mode 100644 index 0ec78104a67..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ConnectAsync.htm +++ /dev/null @@ -1,20 +0,0 @@ -Channel.ConnectAsync Method
    ChannelConnectAsync Method
    - Allows explicitly requesting channel to connect without starting an RPC. - Returned task completes once state Ready was seen. If the deadline is reached, - or channel enters the FatalFailure state, the task is cancelled. - There is no need to call this explicitly unless your use case requires that. - Starting an RPC on a new channel will request connection implicitly. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task ConnectAsync(
    -	Nullable<DateTime> deadline = null
    -)

    Parameters

    deadline (Optional)
    Type: SystemNullableDateTime
    The deadline. null indicates no deadline.

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm deleted file mode 100644 index 86a0ef97f2e..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_ShutdownAsync.htm +++ /dev/null @@ -1,6 +0,0 @@ -Channel.ShutdownAsync Method
    ChannelShutdownAsync Method
    - Waits until there are no more active calls for this channel and then cleans up - resources used by this channel. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task ShutdownAsync()

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm deleted file mode 100644 index c0231ee7ede..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Channel_WaitForStateChangedAsync.htm +++ /dev/null @@ -1,22 +0,0 @@ -Channel.WaitForStateChangedAsync Method
    ChannelWaitForStateChangedAsync Method
    - Returned tasks completes once channel state has become different from - given lastObservedState. - If deadline is reached or and error occurs, returned task is cancelled. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task WaitForStateChangedAsync(
    -	ChannelState lastObservedState,
    -	Nullable<DateTime> deadline = null
    -)

    Parameters

    lastObservedState
    Type: Grpc.CoreChannelState

    [Missing <param name="lastObservedState"/> documentation for "M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})"]

    deadline (Optional)
    Type: SystemNullableDateTime

    [Missing <param name="deadline"/> documentation for "M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})"]

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm deleted file mode 100644 index 3145196a9e6..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor.htm +++ /dev/null @@ -1,24 +0,0 @@ -Channel Constructor (String, Credentials, IEnumerable(ChannelOption))
    Channel Constructor (String, Credentials, IEnumerableChannelOption)
    - Creates a channel that connects to a specific host. - Port will default to 80 for an unsecure channel and to 443 for a secure channel. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Channel(
    -	string target,
    -	Credentials credentials,
    -	IEnumerable<ChannelOption> options = null
    -)

    Parameters

    target
    Type: SystemString
    Target of the channel.
    credentials
    Type: Grpc.CoreCredentials
    Credentials to secure the channel.
    options (Optional)
    Type: System.Collections.GenericIEnumerableChannelOption
    Channel options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm deleted file mode 100644 index ab402e43f14..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Channel__ctor_1.htm +++ /dev/null @@ -1,27 +0,0 @@ -Channel Constructor (String, Int32, Credentials, IEnumerable(ChannelOption))
    Channel Constructor (String, Int32, Credentials, IEnumerableChannelOption)
    - Creates a channel that connects to a specific host and port. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Channel(
    -	string host,
    -	int port,
    -	Credentials credentials,
    -	IEnumerable<ChannelOption> options = null
    -)

    Parameters

    host
    Type: SystemString
    The name or IP address of the host.
    port
    Type: SystemInt32
    The port.
    credentials
    Type: Grpc.CoreCredentials
    Credentials to secure the channel.
    options (Optional)
    Type: System.Collections.GenericIEnumerableChannelOption
    Channel options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm deleted file mode 100644 index 84dcf103242..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase_CreateCall__2.htm +++ /dev/null @@ -1,22 +0,0 @@ -ClientBase.CreateCall(TRequest, TResponse) Method
    ClientBaseCreateCallTRequest, TResponse Method
    - Creates a new call to given method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    protected CallInvocationDetails<TRequest, TResponse> CreateCall<TRequest, TResponse>(
    -	Method<TRequest, TResponse> method,
    -	CallOptions options
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    method
    Type: Grpc.CoreMethodTRequest, TResponse
    The method to invoke.
    options
    Type: Grpc.CoreCallOptions
    The call options.

    Type Parameters

    TRequest
    Request message type.
    TResponse
    Response message type.

    Return Value

    Type: CallInvocationDetailsTRequest, TResponse
    The call invocation details.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm deleted file mode 100644 index ac6021fc970..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ClientBase__ctor.htm +++ /dev/null @@ -1,11 +0,0 @@ -ClientBase Constructor
    ClientBase Constructor
    - Initializes a new instance of ClientBase class. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ClientBase(
    -	Channel channel
    -)

    Parameters

    channel
    Type: Grpc.CoreChannel
    The channel to use for remote call invocation.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm deleted file mode 100644 index 29e79871afe..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ContextPropagationOptions__ctor.htm +++ /dev/null @@ -1,20 +0,0 @@ -ContextPropagationOptions Constructor
    ContextPropagationOptions Constructor
    - Creates new context propagation options. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ContextPropagationOptions(
    -	bool propagateDeadline = true,
    -	bool propagateCancellation = true
    -)

    Parameters

    propagateDeadline (Optional)
    Type: SystemBoolean
    If set to true parent call's deadline will be propagated to the child call.
    propagateCancellation (Optional)
    Type: SystemBoolean
    If set to true parent call's cancellation token will be propagated to the child call.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm deleted file mode 100644 index ebe763639c3..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Credentials__ctor.htm +++ /dev/null @@ -1,2 +0,0 @@ -Credentials Constructor
    Credentials Constructor
    Initializes a new instance of the Credentials class

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    protected Credentials()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm b/doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm deleted file mode 100644 index bda6ac8944e..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_GrpcEnvironment_SetLogger.htm +++ /dev/null @@ -1,12 +0,0 @@ -GrpcEnvironment.SetLogger Method
    GrpcEnvironmentSetLogger Method
    - Sets the application-wide logger that should be used by gRPC. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void SetLogger(
    -	ILogger customLogger
    -)

    Parameters

    customLogger
    Type: Grpc.Core.LoggingILogger

    [Missing <param name="customLogger"/> documentation for "M:Grpc.Core.GrpcEnvironment.SetLogger(Grpc.Core.Logging.ILogger)"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm deleted file mode 100644 index d2a5152f1cd..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_IAsyncStreamWriter_1_WriteAsync.htm +++ /dev/null @@ -1,11 +0,0 @@ -IAsyncStreamWriter(T).WriteAsync Method
    IAsyncStreamWriterTWriteAsync Method
    - Writes a single asynchronously. Only one write can be pending at a time. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    Task WriteAsync(
    -	T message
    -)

    Parameters

    message
    Type: T
    the message to be written. Cannot be null.

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm deleted file mode 100644 index 0988406db3b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_IClientStreamWriter_1_CompleteAsync.htm +++ /dev/null @@ -1,4 +0,0 @@ -IClientStreamWriter(T).CompleteAsync Method
    IClientStreamWriterTCompleteAsync Method
    - Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    Task CompleteAsync()

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm deleted file mode 100644 index 1b4dccb0ccc..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_KeyCertificatePair__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -KeyCertificatePair Constructor
    KeyCertificatePair Constructor
    - Creates a new certificate chain - private key pair. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public KeyCertificatePair(
    -	string certificateChain,
    -	string privateKey
    -)

    Parameters

    certificateChain
    Type: SystemString
    PEM encoded certificate chain.
    privateKey
    Type: SystemString
    PEM encoded private key.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm deleted file mode 100644 index 8b8b4969abf..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Debug.htm +++ /dev/null @@ -1,16 +0,0 @@ -ConsoleLogger.Debug Method
    ConsoleLoggerDebug Method
    Logs a message with severity Debug.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Debug(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]

    Implements

    ILoggerDebug(String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm deleted file mode 100644 index a24a647b603..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error.htm +++ /dev/null @@ -1,21 +0,0 @@ -ConsoleLogger.Error Method (Exception, String, Object[])
    ConsoleLoggerError Method (Exception, String, Object)
    Logs a message and an associated exception with severity Error.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Error(
    -	Exception exception,
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    exception
    Type: SystemException

    [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]

    Implements

    ILoggerError(Exception, String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm deleted file mode 100644 index 567bed9997a..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Error_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -ConsoleLogger.Error Method (String, Object[])
    ConsoleLoggerError Method (String, Object)
    Logs a message with severity Error.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Error(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]

    Implements

    ILoggerError(String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm deleted file mode 100644 index 4246593e35a..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_ForType__1.htm +++ /dev/null @@ -1,7 +0,0 @@ -ConsoleLogger.ForType(T) Method
    ConsoleLoggerForTypeT Method
    - Returns a logger associated with the specified type. -

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ILogger ForType<T>()
    -

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.ForType``1"]

    Return Value

    Type: ILogger

    Implements

    ILoggerForTypeT
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm deleted file mode 100644 index 4f78a99e226..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Info.htm +++ /dev/null @@ -1,16 +0,0 @@ -ConsoleLogger.Info Method
    ConsoleLoggerInfo Method
    Logs a message with severity Info.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Info(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]

    Implements

    ILoggerInfo(String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm deleted file mode 100644 index 40bf7698092..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning.htm +++ /dev/null @@ -1,21 +0,0 @@ -ConsoleLogger.Warning Method (Exception, String, Object[])
    ConsoleLoggerWarning Method (Exception, String, Object)
    Logs a message and an associated exception with severity Warning.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Warning(
    -	Exception exception,
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    exception
    Type: SystemException

    [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]

    Implements

    ILoggerWarning(Exception, String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm deleted file mode 100644 index 7a0effb0881..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger_Warning_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -ConsoleLogger.Warning Method (String, Object[])
    ConsoleLoggerWarning Method (String, Object)
    Logs a message with severity Warning.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Warning(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]

    Implements

    ILoggerWarning(String, Object)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm deleted file mode 100644 index 221f6ae1106..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ConsoleLogger__ctor.htm +++ /dev/null @@ -1,2 +0,0 @@ -ConsoleLogger Constructor
    ConsoleLogger Constructor
    Creates a console logger not associated to any specific type.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ConsoleLogger()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm deleted file mode 100644 index 1aa09b8fdda..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Debug.htm +++ /dev/null @@ -1,13 +0,0 @@ -ILogger.Debug Method
    ILoggerDebug Method
    Logs a message with severity Debug.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Debug(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm deleted file mode 100644 index fdc28ac6d84..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error.htm +++ /dev/null @@ -1,17 +0,0 @@ -ILogger.Error Method (Exception, String, Object[])
    ILoggerError Method (Exception, String, Object)
    Logs a message and an associated exception with severity Error.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Error(
    -	Exception exception,
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    exception
    Type: SystemException

    [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm deleted file mode 100644 index 56f4a568975..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Error_1.htm +++ /dev/null @@ -1,13 +0,0 @@ -ILogger.Error Method (String, Object[])
    ILoggerError Method (String, Object)
    Logs a message with severity Error.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Error(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm deleted file mode 100644 index cfd38dc872e..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_ForType__1.htm +++ /dev/null @@ -1,4 +0,0 @@ -ILogger.ForType(T) Method
    ILoggerForTypeT Method
    Returns a logger associated with the specified type.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    ILogger ForType<T>()
    -

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Logging.ILogger.ForType``1"]

    Return Value

    Type: ILogger
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm deleted file mode 100644 index 59c76da53f1..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Info.htm +++ /dev/null @@ -1,13 +0,0 @@ -ILogger.Info Method
    ILoggerInfo Method
    Logs a message with severity Info.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Info(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm deleted file mode 100644 index 70b9e45c7db..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning.htm +++ /dev/null @@ -1,17 +0,0 @@ -ILogger.Warning Method (Exception, String, Object[])
    ILoggerWarning Method (Exception, String, Object)
    Logs a message and an associated exception with severity Warning.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Warning(
    -	Exception exception,
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    exception
    Type: SystemException

    [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm deleted file mode 100644 index 85e6ee711b4..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Logging_ILogger_Warning_1.htm +++ /dev/null @@ -1,13 +0,0 @@ -ILogger.Warning Method (String, Object[])
    ILoggerWarning Method (String, Object)
    Logs a message with severity Warning.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    void Warning(
    -	string message,
    -	params Object[] formatArgs
    -)

    Parameters

    message
    Type: SystemString

    [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])"]

    formatArgs
    Type: SystemObject

    [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm deleted file mode 100644 index f6bc580b9fb..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Marshaller_1__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -Marshaller(T) Constructor
    MarshallerT Constructor
    - Initializes a new marshaller. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Marshaller(
    -	Func<T, byte[]> serializer,
    -	Func<byte[], T> deserializer
    -)

    Parameters

    serializer
    Type: SystemFuncT, Byte
    Function that will be used to serialize messages.
    deserializer
    Type: SystemFuncByte, T
    Function that will be used to deserialize messages.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm deleted file mode 100644 index 38290607212..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Marshallers_Create__1.htm +++ /dev/null @@ -1,18 +0,0 @@ -Marshallers.Create(T) Method
    MarshallersCreateT Method
    - Creates a marshaller from specified serializer and deserializer. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Marshaller<T> Create<T>(
    -	Func<T, byte[]> serializer,
    -	Func<byte[], T> deserializer
    -)
    -

    Parameters

    serializer
    Type: SystemFuncT, Byte

    [Missing <param name="serializer"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]

    deserializer
    Type: SystemFuncByte, T

    [Missing <param name="deserializer"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Marshallers.Create``1(System.Func{``0,System.Byte[]},System.Func{System.Byte[],``0})"]

    Return Value

    Type: MarshallerT
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm deleted file mode 100644 index 00fb7e73e30..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add.htm +++ /dev/null @@ -1,11 +0,0 @@ -Metadata.Add Method (Metadata.Entry)
    MetadataAdd Method (MetadataEntry)

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Add(
    -	MetadataEntry item
    -)

    Parameters

    item
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)"]

    Implements

    ICollectionTAdd(T)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm deleted file mode 100644 index 8dcafc96108..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_1.htm +++ /dev/null @@ -1,14 +0,0 @@ -Metadata.Add Method (String, Byte[])
    MetadataAdd Method (String, Byte)

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Add(
    -	string key,
    -	byte[] valueBytes
    -)

    Parameters

    key
    Type: SystemString

    [Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]

    valueBytes
    Type: SystemByte

    [Missing <param name="valueBytes"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm deleted file mode 100644 index e43ccc15db9..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Add_2.htm +++ /dev/null @@ -1,14 +0,0 @@ -Metadata.Add Method (String, String)
    MetadataAdd Method (String, String)

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Add(
    -	string key,
    -	string value
    -)

    Parameters

    key
    Type: SystemString

    [Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]

    value
    Type: SystemString

    [Missing <param name="value"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm deleted file mode 100644 index ad2d48528bd..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Clear.htm +++ /dev/null @@ -1,3 +0,0 @@ -Metadata.Clear Method
    MetadataClear Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Clear"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm deleted file mode 100644 index d694363ba93..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Contains.htm +++ /dev/null @@ -1,11 +0,0 @@ -Metadata.Contains Method
    MetadataContains Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool Contains(
    -	MetadataEntry item
    -)

    Parameters

    item
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)"]

    Return Value

    Type: Boolean

    Implements

    ICollectionTContains(T)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm deleted file mode 100644 index 68337313ba4..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_CopyTo.htm +++ /dev/null @@ -1,16 +0,0 @@ -Metadata.CopyTo Method
    MetadataCopyTo Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void CopyTo(
    -	MetadataEntry[] array,
    -	int arrayIndex
    -)

    Parameters

    array
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="array"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]

    arrayIndex
    Type: SystemInt32

    [Missing <param name="arrayIndex"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]

    Implements

    ICollectionTCopyTo(T, Int32)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm deleted file mode 100644 index 1b0f1394fba..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry_ToString.htm +++ /dev/null @@ -1,5 +0,0 @@ -Metadata.Entry.ToString Method
    MetadataEntryToString Method

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public override string ToString()

    Return Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm deleted file mode 100644 index 40df6e344a7..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -Metadata.Entry Constructor (String, Byte[])
    MetadataEntry Constructor (String, Byte)
    - Initializes a new instance of the MetadataEntry struct with a binary value. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Entry(
    -	string key,
    -	byte[] valueBytes
    -)

    Parameters

    key
    Type: SystemString
    Metadata key, needs to have suffix indicating a binary valued metadata entry.
    valueBytes
    Type: SystemByte
    Value bytes.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm deleted file mode 100644 index ed9558c408c..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Entry__ctor_1.htm +++ /dev/null @@ -1,15 +0,0 @@ -Metadata.Entry Constructor (String, String)
    MetadataEntry Constructor (String, String)
    - Initializes a new instance of the MetadataEntry struct holding an ASCII value. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Entry(
    -	string key,
    -	string value
    -)

    Parameters

    key
    Type: SystemString
    Metadata key, must not use suffix indicating a binary valued metadata entry.
    value
    Type: SystemString
    Value string. Only ASCII characters are allowed.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm deleted file mode 100644 index 10ea2fcc009..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_GetEnumerator.htm +++ /dev/null @@ -1,3 +0,0 @@ -Metadata.GetEnumerator Method
    MetadataGetEnumerator Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.GetEnumerator"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IEnumerator<MetadataEntry> GetEnumerator()

    Return Value

    Type: IEnumeratorMetadataEntry

    Implements

    IEnumerableTGetEnumerator
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm deleted file mode 100644 index 0a6464c3c01..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_IndexOf.htm +++ /dev/null @@ -1,11 +0,0 @@ -Metadata.IndexOf Method
    MetadataIndexOf Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int IndexOf(
    -	MetadataEntry item
    -)

    Parameters

    item
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)"]

    Return Value

    Type: Int32

    Implements

    IListTIndexOf(T)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm deleted file mode 100644 index a2a85fe7bc3..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Insert.htm +++ /dev/null @@ -1,16 +0,0 @@ -Metadata.Insert Method
    MetadataInsert Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Insert(
    -	int index,
    -	MetadataEntry item
    -)

    Parameters

    index
    Type: SystemInt32

    [Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]

    item
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]

    Implements

    IListTInsert(Int32, T)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm deleted file mode 100644 index d232a7e3109..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_Remove.htm +++ /dev/null @@ -1,11 +0,0 @@ -Metadata.Remove Method
    MetadataRemove Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool Remove(
    -	MetadataEntry item
    -)

    Parameters

    item
    Type: Grpc.CoreMetadataEntry

    [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)"]

    Return Value

    Type: Boolean

    Implements

    ICollectionTRemove(T)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm deleted file mode 100644 index c1bfbcc785f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata_RemoveAt.htm +++ /dev/null @@ -1,11 +0,0 @@ -Metadata.RemoveAt Method
    MetadataRemoveAt Method

    [Missing <summary> documentation for "M:Grpc.Core.Metadata.RemoveAt(System.Int32)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void RemoveAt(
    -	int index
    -)

    Parameters

    index
    Type: SystemInt32

    [Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.RemoveAt(System.Int32)"]

    Implements

    IListTRemoveAt(Int32)
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm deleted file mode 100644 index f38b3692cec..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Metadata__ctor.htm +++ /dev/null @@ -1,4 +0,0 @@ -Metadata Constructor
    Metadata Constructor
    - Initializes a new instance of Metadata. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm deleted file mode 100644 index 694942ca9cc..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Method_2__ctor.htm +++ /dev/null @@ -1,27 +0,0 @@ -Method(TRequest, TResponse) Constructor
    MethodTRequest, TResponse Constructor
    - Initializes a new instance of the Method class. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Method(
    -	MethodType type,
    -	string serviceName,
    -	string name,
    -	Marshaller<TRequest> requestMarshaller,
    -	Marshaller<TResponse> responseMarshaller
    -)

    Parameters

    type
    Type: Grpc.CoreMethodType
    Type of method.
    serviceName
    Type: SystemString
    Name of service this method belongs to.
    name
    Type: SystemString
    Unqualified name of the method.
    requestMarshaller
    Type: Grpc.CoreMarshallerTRequest
    Marshaller used for request messages.
    responseMarshaller
    Type: Grpc.CoreMarshallerTResponse
    Marshaller used for response messages.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm deleted file mode 100644 index c895d166b25..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor.htm +++ /dev/null @@ -1,11 +0,0 @@ -RpcException Constructor (Status)
    RpcException Constructor (Status)
    - Creates a new RpcException associated with given status. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public RpcException(
    -	Status status
    -)

    Parameters

    status
    Type: Grpc.CoreStatus
    Resulting status of a call.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm deleted file mode 100644 index 966d085b90d..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_RpcException__ctor_1.htm +++ /dev/null @@ -1,15 +0,0 @@ -RpcException Constructor (Status, String)
    RpcException Constructor (Status, String)
    - Creates a new RpcException associated with given status and message. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public RpcException(
    -	Status status,
    -	string message
    -)

    Parameters

    status
    Type: Grpc.CoreStatus
    Resulting status of a call.
    message
    Type: SystemString
    The exception message.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm deleted file mode 100644 index 047e5edca8f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_CreatePropagationToken.htm +++ /dev/null @@ -1,16 +0,0 @@ -ServerCallContext.CreatePropagationToken Method
    ServerCallContextCreatePropagationToken Method
    - Creates a propagation token to be used to propagate call context to a child call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ContextPropagationToken CreatePropagationToken(
    -	ContextPropagationOptions options = null
    -)

    Parameters

    options (Optional)
    Type: Grpc.CoreContextPropagationOptions

    [Missing <param name="options"/> documentation for "M:Grpc.Core.ServerCallContext.CreatePropagationToken(Grpc.Core.ContextPropagationOptions)"]

    Return Value

    Type: ContextPropagationToken
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm deleted file mode 100644 index 6c57bddadc1..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCallContext_WriteResponseHeadersAsync.htm +++ /dev/null @@ -1,14 +0,0 @@ -ServerCallContext.WriteResponseHeadersAsync Method
    ServerCallContextWriteResponseHeadersAsync Method
    - Asynchronously sends response headers for the current call to the client. This method may only be invoked once for each call and needs to be invoked - before any response messages are written. Writing the first response message implicitly sends empty response headers if WriteResponseHeadersAsync haven't - been called yet. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task WriteResponseHeadersAsync(
    -	Metadata responseHeaders
    -)

    Parameters

    responseHeaders
    Type: Grpc.CoreMetadata
    The response headers to send.

    Return Value

    Type: Task
    The task that finished once response headers have been written.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm deleted file mode 100644 index 60476726116..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerCredentials__ctor.htm +++ /dev/null @@ -1,2 +0,0 @@ -ServerCredentials Constructor
    ServerCredentials Constructor
    Initializes a new instance of the ServerCredentials class

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    protected ServerCredentials()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm deleted file mode 100644 index 8fb735aa72f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerPort__ctor.htm +++ /dev/null @@ -1,19 +0,0 @@ -ServerPort Constructor
    ServerPort Constructor
    - Creates a new port on which server should listen. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerPort(
    -	string host,
    -	int port,
    -	ServerCredentials credentials
    -)

    Parameters

    host
    Type: SystemString
    the host
    port
    Type: SystemInt32
    the port. If zero, an unused port is chosen automatically.
    credentials
    Type: Grpc.CoreServerCredentials
    credentials to use to secure this port.

    Return Value

    Type: 
    The port on which server will be listening.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm deleted file mode 100644 index 2657515e649..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2.htm +++ /dev/null @@ -1,22 +0,0 @@ -ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ClientStreamingServerMethod(TRequest, TResponse))
    ServerServiceDefinitionBuilderAddMethodTRequest, TResponse Method (MethodTRequest, TResponse, ClientStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a client streaming method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinitionBuilder AddMethod<TRequest, TResponse>(
    -	Method<TRequest, TResponse> method,
    -	ClientStreamingServerMethod<TRequest, TResponse> handler
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    method
    Type: Grpc.CoreMethodTRequest, TResponse
    The method.
    handler
    Type: Grpc.CoreClientStreamingServerMethodTRequest, TResponse
    The method handler.

    Type Parameters

    TRequest
    The request message class.
    TResponse
    The response message class.

    Return Value

    Type: ServerServiceDefinitionBuilder
    This builder instance.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm deleted file mode 100644 index a17145b7c9a..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_1.htm +++ /dev/null @@ -1,22 +0,0 @@ -ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), DuplexStreamingServerMethod(TRequest, TResponse))
    ServerServiceDefinitionBuilderAddMethodTRequest, TResponse Method (MethodTRequest, TResponse, DuplexStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a bidirectional streaming method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinitionBuilder AddMethod<TRequest, TResponse>(
    -	Method<TRequest, TResponse> method,
    -	DuplexStreamingServerMethod<TRequest, TResponse> handler
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    method
    Type: Grpc.CoreMethodTRequest, TResponse
    The method.
    handler
    Type: Grpc.CoreDuplexStreamingServerMethodTRequest, TResponse
    The method handler.

    Type Parameters

    TRequest
    The request message class.
    TResponse
    The response message class.

    Return Value

    Type: ServerServiceDefinitionBuilder
    This builder instance.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm deleted file mode 100644 index e11bf11fda9..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_2.htm +++ /dev/null @@ -1,22 +0,0 @@ -ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), ServerStreamingServerMethod(TRequest, TResponse))
    ServerServiceDefinitionBuilderAddMethodTRequest, TResponse Method (MethodTRequest, TResponse, ServerStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a server streaming method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinitionBuilder AddMethod<TRequest, TResponse>(
    -	Method<TRequest, TResponse> method,
    -	ServerStreamingServerMethod<TRequest, TResponse> handler
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    method
    Type: Grpc.CoreMethodTRequest, TResponse
    The method.
    handler
    Type: Grpc.CoreServerStreamingServerMethodTRequest, TResponse
    The method handler.

    Type Parameters

    TRequest
    The request message class.
    TResponse
    The response message class.

    Return Value

    Type: ServerServiceDefinitionBuilder
    This builder instance.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm deleted file mode 100644 index 6872d17fc51..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_AddMethod__2_3.htm +++ /dev/null @@ -1,22 +0,0 @@ -ServerServiceDefinition.Builder.AddMethod(TRequest, TResponse) Method (Method(TRequest, TResponse), UnaryServerMethod(TRequest, TResponse))
    ServerServiceDefinitionBuilderAddMethodTRequest, TResponse Method (MethodTRequest, TResponse, UnaryServerMethodTRequest, TResponse)
    - Adds a definitions for a single request - single response method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinitionBuilder AddMethod<TRequest, TResponse>(
    -	Method<TRequest, TResponse> method,
    -	UnaryServerMethod<TRequest, TResponse> handler
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    method
    Type: Grpc.CoreMethodTRequest, TResponse
    The method.
    handler
    Type: Grpc.CoreUnaryServerMethodTRequest, TResponse
    The method handler.

    Type Parameters

    TRequest
    The request message class.
    TResponse
    The response message class.

    Return Value

    Type: ServerServiceDefinitionBuilder
    This builder instance.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm deleted file mode 100644 index e6a77173174..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder_Build.htm +++ /dev/null @@ -1,5 +0,0 @@ -ServerServiceDefinition.Builder.Build Method
    ServerServiceDefinitionBuilderBuild Method
    - Creates an immutable ServerServiceDefinition from this builder. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinition Build()

    Return Value

    Type: ServerServiceDefinition
    The ServerServiceDefinition object.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm deleted file mode 100644 index df2a7c80b43..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_Builder__ctor.htm +++ /dev/null @@ -1,11 +0,0 @@ -ServerServiceDefinition.Builder Constructor
    ServerServiceDefinitionBuilder Constructor
    - Creates a new instance of builder. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Builder(
    -	string serviceName
    -)

    Parameters

    serviceName
    Type: SystemString
    The service name.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm b/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm deleted file mode 100644 index 35367789338..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_ServerServiceDefinition_CreateBuilder.htm +++ /dev/null @@ -1,12 +0,0 @@ -ServerServiceDefinition.CreateBuilder Method
    ServerServiceDefinitionCreateBuilder Method
    - Creates a new builder object for ServerServiceDefinition. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static ServerServiceDefinitionBuilder CreateBuilder(
    -	string serviceName
    -)

    Parameters

    serviceName
    Type: SystemString
    The service name.

    Return Value

    Type: ServerServiceDefinitionBuilder
    The builder object.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm deleted file mode 100644 index 6740d43c25f..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_KillAsync.htm +++ /dev/null @@ -1,6 +0,0 @@ -Server.KillAsync Method
    ServerKillAsync Method
    - Requests server shutdown while cancelling all the in-progress calls. - The returned task finishes when shutdown procedure is complete. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task KillAsync()

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm deleted file mode 100644 index c4a99d2c187..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add.htm +++ /dev/null @@ -1,13 +0,0 @@ -Server.ServerPortCollection.Add Method (ServerPort)
    ServerServerPortCollectionAdd Method (ServerPort)
    - Adds a new port on which server should listen. - Only call this before Start(). -

    Return Value

    Type: Int32
    The port on which server will be listening.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int Add(
    -	ServerPort serverPort
    -)

    Parameters

    serverPort
    Type: Grpc.CoreServerPort

    [Missing <param name="serverPort"/> documentation for "M:Grpc.Core.Server.ServerPortCollection.Add(Grpc.Core.ServerPort)"]

    Return Value

    Type: Int32
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm deleted file mode 100644 index cb2e91c5bf8..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_Add_1.htm +++ /dev/null @@ -1,20 +0,0 @@ -Server.ServerPortCollection.Add Method (String, Int32, ServerCredentials)
    ServerServerPortCollectionAdd Method (String, Int32, ServerCredentials)
    - Adds a new port on which server should listen. -

    Return Value

    Type: Int32
    The port on which server will be listening.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int Add(
    -	string host,
    -	int port,
    -	ServerCredentials credentials
    -)

    Parameters

    host
    Type: SystemString
    the host
    port
    Type: SystemInt32
    the port. If zero, an unused port is chosen automatically.
    credentials
    Type: Grpc.CoreServerCredentials
    credentials to use to secure this port.

    Return Value

    Type: Int32
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm deleted file mode 100644 index e97dc2678aa..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServerPortCollection_GetEnumerator.htm +++ /dev/null @@ -1,5 +0,0 @@ -Server.ServerPortCollection.GetEnumerator Method
    ServerServerPortCollectionGetEnumerator Method
    - Gets enumerator for this collection. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IEnumerator<ServerPort> GetEnumerator()

    Return Value

    Type: IEnumeratorServerPort

    Implements

    IEnumerableTGetEnumerator
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm deleted file mode 100644 index a07c16c432b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_Add.htm +++ /dev/null @@ -1,13 +0,0 @@ -Server.ServiceDefinitionCollection.Add Method
    ServerServiceDefinitionCollectionAdd Method
    - Adds a service definition to the server. This is how you register - handlers for a service with the server. Only call this before Start(). -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Add(
    -	ServerServiceDefinition serviceDefinition
    -)

    Parameters

    serviceDefinition
    Type: Grpc.CoreServerServiceDefinition

    [Missing <param name="serviceDefinition"/> documentation for "M:Grpc.Core.Server.ServiceDefinitionCollection.Add(Grpc.Core.ServerServiceDefinition)"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm deleted file mode 100644 index 4ed95b8067b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ServiceDefinitionCollection_GetEnumerator.htm +++ /dev/null @@ -1,5 +0,0 @@ -Server.ServiceDefinitionCollection.GetEnumerator Method
    ServerServiceDefinitionCollectionGetEnumerator Method
    - Gets enumerator for this collection. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IEnumerator<ServerServiceDefinition> GetEnumerator()

    Return Value

    Type: IEnumeratorServerServiceDefinition

    Implements

    IEnumerableTGetEnumerator
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm deleted file mode 100644 index fe17505271d..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_ShutdownAsync.htm +++ /dev/null @@ -1,7 +0,0 @@ -Server.ShutdownAsync Method
    ServerShutdownAsync Method
    - Requests server shutdown and when there are no more calls being serviced, - cleans up used resources. The returned task finishes when shutdown procedure - is complete. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task ShutdownAsync()

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm deleted file mode 100644 index 4dff55d6c5b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server_Start.htm +++ /dev/null @@ -1,5 +0,0 @@ -Server.Start Method
    ServerStart Method
    - Starts the server. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public void Start()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm deleted file mode 100644 index 379adb59c79..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Server__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -Server Constructor
    Server Constructor
    - Create a new server. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Server(
    -	IEnumerable<ChannelOption> options = null
    -)

    Parameters

    options (Optional)
    Type: System.Collections.GenericIEnumerableChannelOption
    Channel options.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm deleted file mode 100644 index 52ad2e6a505..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor.htm +++ /dev/null @@ -1,6 +0,0 @@ -SslCredentials Constructor
    SslCredentials Constructor
    - Creates client-side SSL credentials loaded from - disk file pointed to by the GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable. - If that fails, gets the roots certificates from a well known place on disk. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public SslCredentials()
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm deleted file mode 100644 index bda4a9f3787..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_1.htm +++ /dev/null @@ -1,12 +0,0 @@ -SslCredentials Constructor (String)
    SslCredentials Constructor (String)
    - Creates client-side SSL credentials from - a string containing PEM encoded root certificates. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public SslCredentials(
    -	string rootCertificates
    -)

    Parameters

    rootCertificates
    Type: SystemString

    [Missing <param name="rootCertificates"/> documentation for "M:Grpc.Core.SslCredentials.#ctor(System.String)"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm b/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm deleted file mode 100644 index c90d5e8b8ee..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_SslCredentials__ctor_2.htm +++ /dev/null @@ -1,15 +0,0 @@ -SslCredentials Constructor (String, KeyCertificatePair)
    SslCredentials Constructor (String, KeyCertificatePair)
    - Creates client-side SSL credentials. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public SslCredentials(
    -	string rootCertificates,
    -	KeyCertificatePair keyCertificatePair
    -)

    Parameters

    rootCertificates
    Type: SystemString
    string containing PEM encoded server root certificates.
    keyCertificatePair
    Type: Grpc.CoreKeyCertificatePair
    a key certificate pair.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm deleted file mode 100644 index 944833da133..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor.htm +++ /dev/null @@ -1,13 +0,0 @@ -SslServerCredentials Constructor (IEnumerable(KeyCertificatePair))
    SslServerCredentials Constructor (IEnumerableKeyCertificatePair)
    - Creates server-side SSL credentials. - This constructor should be use if you do not wish to autheticate client - using client root certificates. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public SslServerCredentials(
    -	IEnumerable<KeyCertificatePair> keyCertificatePairs
    -)

    Parameters

    keyCertificatePairs
    Type: System.Collections.GenericIEnumerableKeyCertificatePair
    Key-certificates to use.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm deleted file mode 100644 index c007bfce740..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_SslServerCredentials__ctor_1.htm +++ /dev/null @@ -1,19 +0,0 @@ -SslServerCredentials Constructor (IEnumerable(KeyCertificatePair), String, Boolean)
    SslServerCredentials Constructor (IEnumerableKeyCertificatePair, String, Boolean)
    - Creates server-side SSL credentials. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public SslServerCredentials(
    -	IEnumerable<KeyCertificatePair> keyCertificatePairs,
    -	string rootCertificates,
    -	bool forceClientAuth
    -)

    Parameters

    keyCertificatePairs
    Type: System.Collections.GenericIEnumerableKeyCertificatePair
    Key-certificates to use.
    rootCertificates
    Type: SystemString
    PEM encoded client root certificates used to authenticate client.
    forceClientAuth
    Type: SystemBoolean
    If true, client will be rejected unless it proves its unthenticity using against rootCertificates.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm deleted file mode 100644 index 4ada77660f6..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Status_ToString.htm +++ /dev/null @@ -1,5 +0,0 @@ -Status.ToString Method
    StatusToString Method
    - Returns a String that represents the current Status. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public override string ToString()

    Return Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm deleted file mode 100644 index 774028f2551..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Status__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -Status Constructor
    Status Constructor
    - Creates a new instance of Status. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status(
    -	StatusCode statusCode,
    -	string detail
    -)

    Parameters

    statusCode
    Type: Grpc.CoreStatusCode
    Status code.
    detail
    Type: SystemString
    Detail.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm deleted file mode 100644 index 52f3cf613bb..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ForEachAsync__1.htm +++ /dev/null @@ -1,23 +0,0 @@ -AsyncStreamExtensions.ForEachAsync(T) Method
    AsyncStreamExtensionsForEachAsyncT Method
    - Reads the entire stream and executes an async action for each element. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Task ForEachAsync<T>(
    -	this IAsyncStreamReader<T> streamReader,
    -	Func<T, Task> asyncAction
    -)
    -where T : class
    -

    Parameters

    streamReader
    Type: Grpc.CoreIAsyncStreamReaderT

    [Missing <param name="streamReader"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]

    asyncAction
    Type: SystemFuncT, Task

    [Missing <param name="asyncAction"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ForEachAsync``1(Grpc.Core.IAsyncStreamReader{``0},System.Func{``0,System.Threading.Tasks.Task})"]

    Return Value

    Type: Task

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IAsyncStreamReaderT. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm deleted file mode 100644 index ea531a54214..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_ToListAsync__1.htm +++ /dev/null @@ -1,19 +0,0 @@ -AsyncStreamExtensions.ToListAsync(T) Method
    AsyncStreamExtensionsToListAsyncT Method
    - Reads the entire stream and creates a list containing all the elements read. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Task<List<T>> ToListAsync<T>(
    -	this IAsyncStreamReader<T> streamReader
    -)
    -where T : class
    -

    Parameters

    streamReader
    Type: Grpc.CoreIAsyncStreamReaderT

    [Missing <param name="streamReader"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1(Grpc.Core.IAsyncStreamReader{``0})"]

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.ToListAsync``1(Grpc.Core.IAsyncStreamReader{``0})"]

    Return Value

    Type: TaskListT

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IAsyncStreamReaderT. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm deleted file mode 100644 index 1acc8eccc36..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1.htm +++ /dev/null @@ -1,32 +0,0 @@ -AsyncStreamExtensions.WriteAllAsync(T) Method (IClientStreamWriter(T), IEnumerable(T), Boolean)
    AsyncStreamExtensionsWriteAllAsyncT Method (IClientStreamWriterT, IEnumerableT, Boolean)
    - Writes all elements from given enumerable to the stream. - Completes the stream afterwards unless close = false. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Task WriteAllAsync<T>(
    -	this IClientStreamWriter<T> streamWriter,
    -	IEnumerable<T> elements,
    -	bool complete = true
    -)
    -where T : class
    -

    Parameters

    streamWriter
    Type: Grpc.CoreIClientStreamWriterT

    [Missing <param name="streamWriter"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]

    elements
    Type: System.Collections.GenericIEnumerableT

    [Missing <param name="elements"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]

    complete (Optional)
    Type: SystemBoolean

    [Missing <param name="complete"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IClientStreamWriter{``0},System.Collections.Generic.IEnumerable{``0},System.Boolean)"]

    Return Value

    Type: Task

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IClientStreamWriterT. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm deleted file mode 100644 index de81a756785..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync__1_1.htm +++ /dev/null @@ -1,23 +0,0 @@ -AsyncStreamExtensions.WriteAllAsync(T) Method (IServerStreamWriter(T), IEnumerable(T))
    AsyncStreamExtensionsWriteAllAsyncT Method (IServerStreamWriterT, IEnumerableT)
    - Writes all elements from given enumerable to the stream. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Task WriteAllAsync<T>(
    -	this IServerStreamWriter<T> streamWriter,
    -	IEnumerable<T> elements
    -)
    -where T : class
    -

    Parameters

    streamWriter
    Type: Grpc.CoreIServerStreamWriterT

    [Missing <param name="streamWriter"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]

    elements
    Type: System.Collections.GenericIEnumerableT

    [Missing <param name="elements"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.AsyncStreamExtensions.WriteAllAsync``1(Grpc.Core.IServerStreamWriter{``0},System.Collections.Generic.IEnumerable{``0})"]

    Return Value

    Type: Task

    Usage Note

    In Visual Basic and C#, you can call this method as an instance method on any object of type IServerStreamWriterT. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm deleted file mode 100644 index a50445e263c..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_BenchmarkUtil_RunBenchmark.htm +++ /dev/null @@ -1,20 +0,0 @@ -BenchmarkUtil.RunBenchmark Method
    BenchmarkUtilRunBenchmark Method
    - Runs a simple benchmark preceded by warmup phase. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void RunBenchmark(
    -	int warmupIterations,
    -	int benchmarkIterations,
    -	Action action
    -)

    Parameters

    warmupIterations
    Type: SystemInt32

    [Missing <param name="warmupIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]

    benchmarkIterations
    Type: SystemInt32

    [Missing <param name="benchmarkIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]

    action
    Type: SystemAction

    [Missing <param name="action"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]

    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm deleted file mode 100644 index d40a11bc644..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument.htm +++ /dev/null @@ -1,12 +0,0 @@ -Preconditions.CheckArgument Method (Boolean)
    PreconditionsCheckArgument Method (Boolean)
    - Throws ArgumentException if condition is false. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void CheckArgument(
    -	bool condition
    -)

    Parameters

    condition
    Type: SystemBoolean
    The condition.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm deleted file mode 100644 index 56b6c244a8c..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckArgument_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -Preconditions.CheckArgument Method (Boolean, String)
    PreconditionsCheckArgument Method (Boolean, String)
    - Throws ArgumentException with given message if condition is false. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void CheckArgument(
    -	bool condition,
    -	string errorMessage
    -)

    Parameters

    condition
    Type: SystemBoolean
    The condition.
    errorMessage
    Type: SystemString
    The error message.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm deleted file mode 100644 index 36cc6c1227b..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1.htm +++ /dev/null @@ -1,14 +0,0 @@ -Preconditions.CheckNotNull(T) Method (T)
    PreconditionsCheckNotNullT Method (T)
    - Throws ArgumentNullException if reference is null. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static T CheckNotNull<T>(
    -	T reference
    -)
    -

    Parameters

    reference
    Type: T
    The reference.

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0)"]

    Return Value

    Type: T
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm deleted file mode 100644 index 5ea25a0a01c..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckNotNull__1_1.htm +++ /dev/null @@ -1,18 +0,0 @@ -Preconditions.CheckNotNull(T) Method (T, String)
    PreconditionsCheckNotNullT Method (T, String)
    - Throws ArgumentNullException if reference is null. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static T CheckNotNull<T>(
    -	T reference,
    -	string paramName
    -)
    -

    Parameters

    reference
    Type: T
    The reference.
    paramName
    Type: SystemString
    The parameter name.

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Utils.Preconditions.CheckNotNull``1(``0,System.String)"]

    Return Value

    Type: T
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm deleted file mode 100644 index c802526f253..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState.htm +++ /dev/null @@ -1,12 +0,0 @@ -Preconditions.CheckState Method (Boolean)
    PreconditionsCheckState Method (Boolean)
    - Throws InvalidOperationException if condition is false. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void CheckState(
    -	bool condition
    -)

    Parameters

    condition
    Type: SystemBoolean
    The condition.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm b/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm deleted file mode 100644 index 4391a674e10..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_Utils_Preconditions_CheckState_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -Preconditions.CheckState Method (Boolean, String)
    PreconditionsCheckState Method (Boolean, String)
    - Throws InvalidOperationException with given message if condition is false. -

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static void CheckState(
    -	bool condition,
    -	string errorMessage
    -)

    Parameters

    condition
    Type: SystemBoolean
    The condition.
    errorMessage
    Type: SystemString
    The error message.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm b/doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm deleted file mode 100644 index 0beaa8a8858..00000000000 --- a/doc/ref/csharp/html/html/M_Grpc_Core_WriteOptions__ctor.htm +++ /dev/null @@ -1,15 +0,0 @@ -WriteOptions Constructor
    WriteOptions Constructor
    - Initializes a new instance of WriteOptions class. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public WriteOptions(
    -	WriteFlags flags = 
    -)

    Parameters

    flags (Optional)
    Type: Grpc.CoreWriteFlags
    The write flags.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm deleted file mode 100644 index 67729e61c1a..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Auth_AuthInterceptors.htm +++ /dev/null @@ -1,8 +0,0 @@ -AuthInterceptors Methods
    AuthInterceptors Methods

    The AuthInterceptors type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberFromAccessToken
    - Creates OAuth2 interceptor that will use given access token as authorization. -
    Public methodStatic memberFromCredential
    - Creates interceptor that will obtain access token from any credential type that implements - ITokenAccess. (e.g. GoogleCredential). -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm deleted file mode 100644 index 1a980e8a2a3..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.htm +++ /dev/null @@ -1,16 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse) Methods
    AsyncClientStreamingCallTRequest, TResponse Methods

    The AsyncClientStreamingCallTRequest, TResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetAwaiter
    - Allows awaiting this object directly. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm deleted file mode 100644 index b52e7bb7c7a..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm +++ /dev/null @@ -1,14 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse) Methods
    AsyncDuplexStreamingCallTRequest, TResponse Methods

    The AsyncDuplexStreamingCallTRequest, TResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm deleted file mode 100644 index c2cbdffe878..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.htm +++ /dev/null @@ -1,14 +0,0 @@ -AsyncServerStreamingCall(TResponse) Methods
    AsyncServerStreamingCallTResponse Methods

    The AsyncServerStreamingCallTResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm deleted file mode 100644 index 7be009c0694..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_AsyncUnaryCall_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -AsyncUnaryCall(TResponse) Methods
    AsyncUnaryCallTResponse Methods

    The AsyncUnaryCallTResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetAwaiter
    - Allows awaiting this object directly. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm deleted file mode 100644 index 2cc225528fa..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallInvocationDetails_2.htm +++ /dev/null @@ -1,6 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Methods
    CallInvocationDetailsTRequest, TResponse Methods

    The CallInvocationDetailsTRequest, TResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns the fully qualified type name of this instance.
    (Inherited from ValueType.)
    Public methodWithOptions
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm deleted file mode 100644 index f9fe02ed1ce..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_CallOptions.htm +++ /dev/null @@ -1,12 +0,0 @@ -CallOptions Methods
    CallOptions Methods

    The CallOptions type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns the fully qualified type name of this instance.
    (Inherited from ValueType.)
    Public methodWithCancellationToken
    - Returns new instance of CallOptions with - CancellationToken set to the value provided. Values of all other fields are preserved. -
    Public methodWithDeadline
    - Returns new instance of CallOptions with - Deadline set to the value provided. Values of all other fields are preserved. -
    Public methodWithHeaders
    - Returns new instance of CallOptions with - Headers set to the value provided. Values of all other fields are preserved. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm deleted file mode 100644 index 8933af3feae..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Calls.htm +++ /dev/null @@ -1,17 +0,0 @@ -Calls Methods
    Calls Methods

    The Calls type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberAsyncClientStreamingCallTRequest, TResponse
    - Invokes a client streaming call asynchronously. - In client streaming scenario, client sends a stream of requests and server responds with a single response. -
    Public methodStatic memberAsyncDuplexStreamingCallTRequest, TResponse
    - Invokes a duplex streaming call asynchronously. - In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses. - The response stream is completely independent and both side can be sending messages at the same time. -
    Public methodStatic memberAsyncServerStreamingCallTRequest, TResponse
    - Invokes a server streaming call asynchronously. - In server streaming scenario, client sends on request and server responds with a stream of responses. -
    Public methodStatic memberAsyncUnaryCallTRequest, TResponse
    - Invokes a simple remote call asynchronously. -
    Public methodStatic memberBlockingUnaryCallTRequest, TResponse
    - Invokes a simple remote call in a blocking fashion. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm deleted file mode 100644 index 5aa7e521756..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Channel.htm +++ /dev/null @@ -1,16 +0,0 @@ -Channel Methods
    Channel Methods

    The Channel type exposes the following members.

    Methods
    -   - NameDescription
    Public methodConnectAsync
    - Allows explicitly requesting channel to connect without starting an RPC. - Returned task completes once state Ready was seen. If the deadline is reached, - or channel enters the FatalFailure state, the task is cancelled. - There is no need to call this explicitly unless your use case requires that. - Starting an RPC on a new channel will request connection implicitly. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodShutdownAsync
    - Waits until there are no more active calls for this channel and then cleans up - resources used by this channel. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWaitForStateChangedAsync
    - Returned tasks completes once channel state has become different from - given lastObservedState. - If deadline is reached or and error occurs, returned task is cancelled. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm deleted file mode 100644 index 4629b7a4a30..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ChannelOption.htm +++ /dev/null @@ -1,3 +0,0 @@ -ChannelOption Methods
    ChannelOption Methods

    The ChannelOption type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm deleted file mode 100644 index b0f38c947f5..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ClientBase.htm +++ /dev/null @@ -1,5 +0,0 @@ -ClientBase Methods
    ClientBase Methods

    The ClientBase type exposes the following members.

    Methods
    -   - NameDescription
    Protected methodCreateCallTRequest, TResponse
    - Creates a new call to given method. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm deleted file mode 100644 index abc1abbea8f..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationOptions.htm +++ /dev/null @@ -1,3 +0,0 @@ -ContextPropagationOptions Methods
    ContextPropagationOptions Methods

    The ContextPropagationOptions type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm deleted file mode 100644 index 0bf0e221adc..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ContextPropagationToken.htm +++ /dev/null @@ -1,3 +0,0 @@ -ContextPropagationToken Methods
    ContextPropagationToken Methods

    The ContextPropagationToken type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm deleted file mode 100644 index 2ab1c230630..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Credentials.htm +++ /dev/null @@ -1,3 +0,0 @@ -Credentials Methods
    Credentials Methods

    The Credentials type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm deleted file mode 100644 index 56aede94470..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_GrpcEnvironment.htm +++ /dev/null @@ -1,5 +0,0 @@ -GrpcEnvironment Methods
    GrpcEnvironment Methods

    The GrpcEnvironment type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodStatic memberSetLogger
    - Sets the application-wide logger that should be used by gRPC. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm deleted file mode 100644 index 9ccee5b4b6d..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamReader_1.htm +++ /dev/null @@ -1,9 +0,0 @@ -IAsyncStreamReader(T) Methods
    IAsyncStreamReaderT Methods

    The IAsyncStreamReaderT generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDispose
    Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
    (Inherited from IDisposable.)
    Public methodMoveNext (Inherited from IAsyncEnumeratorT.)
    Top
    Extension Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm deleted file mode 100644 index f69951fdf01..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IAsyncStreamWriter_1.htm +++ /dev/null @@ -1,5 +0,0 @@ -IAsyncStreamWriter(T) Methods
    IAsyncStreamWriterT Methods

    The IAsyncStreamWriterT generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodWriteAsync
    - Writes a single asynchronously. Only one write can be pending at a time. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm deleted file mode 100644 index 271b5cf2513..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IClientStreamWriter_1.htm +++ /dev/null @@ -1,12 +0,0 @@ -IClientStreamWriter(T) Methods
    IClientStreamWriterT Methods

    The IClientStreamWriterT generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodCompleteAsync
    - Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. -
    Public methodWriteAsync
    - Writes a single asynchronously. Only one write can be pending at a time. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    Extension Methods
    -   - NameDescription
    Public Extension MethodWriteAllAsyncT
    - Writes all elements from given enumerable to the stream. - Completes the stream afterwards unless close = false. -
    (Defined by AsyncStreamExtensions.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm deleted file mode 100644 index 9ab9b0d00fd..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_IServerStreamWriter_1.htm +++ /dev/null @@ -1,9 +0,0 @@ -IServerStreamWriter(T) Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm deleted file mode 100644 index 31988564f91..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_KeyCertificatePair.htm +++ /dev/null @@ -1,3 +0,0 @@ -KeyCertificatePair Methods
    KeyCertificatePair Methods

    The KeyCertificatePair type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm deleted file mode 100644 index 5ee03065d1e..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ConsoleLogger.htm +++ /dev/null @@ -1,5 +0,0 @@ -ConsoleLogger Methods
    ConsoleLogger Methods

    The ConsoleLogger type exposes the following members.

    Methods
    -   - NameDescription
    Public methodDebug
    Logs a message with severity Debug.
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodError(String, Object)
    Logs a message with severity Error.
    Public methodError(Exception, String, Object)
    Logs a message and an associated exception with severity Error.
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodForTypeT
    - Returns a logger associated with the specified type. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInfo
    Logs a message with severity Info.
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWarning(String, Object)
    Logs a message with severity Warning.
    Public methodWarning(Exception, String, Object)
    Logs a message and an associated exception with severity Warning.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm deleted file mode 100644 index 0f4357be401..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Logging_ILogger.htm +++ /dev/null @@ -1,3 +0,0 @@ -ILogger Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm deleted file mode 100644 index a9ae1fd6ac5..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshaller_1.htm +++ /dev/null @@ -1,3 +0,0 @@ -Marshaller(T) Methods
    MarshallerT Methods

    The MarshallerT generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm deleted file mode 100644 index aa8491ca2f5..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Marshallers.htm +++ /dev/null @@ -1,5 +0,0 @@ -Marshallers Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm deleted file mode 100644 index aacbe035f78..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata.htm +++ /dev/null @@ -1,3 +0,0 @@ -Metadata Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm deleted file mode 100644 index 44e0cd1fa05..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Metadata_Entry.htm +++ /dev/null @@ -1,5 +0,0 @@ -Entry Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm deleted file mode 100644 index b4b0b5cc631..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Method_2.htm +++ /dev/null @@ -1,3 +0,0 @@ -Method(TRequest, TResponse) Methods
    MethodTRequest, TResponse Methods

    The MethodTRequest, TResponse generic type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm deleted file mode 100644 index 83c86a82066..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_RpcException.htm +++ /dev/null @@ -1,3 +0,0 @@ -RpcException Methods
    RpcException Methods

    The RpcException type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetBaseException
    When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.
    (Inherited from Exception.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetObjectData
    When overridden in a derived class, sets the SerializationInfo with information about the exception.
    (Inherited from Exception.)
    Public methodGetType
    Gets the runtime type of the current instance.
    (Inherited from Exception.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Creates and returns a string representation of the current exception.
    (Inherited from Exception.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm deleted file mode 100644 index bf2e344c91e..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server.htm +++ /dev/null @@ -1,12 +0,0 @@ -Server Methods
    Server Methods

    The Server type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodKillAsync
    - Requests server shutdown while cancelling all the in-progress calls. - The returned task finishes when shutdown procedure is complete. -
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodShutdownAsync
    - Requests server shutdown and when there are no more calls being serviced, - cleans up used resources. The returned task finishes when shutdown procedure - is complete. -
    Public methodStart
    - Starts the server. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm deleted file mode 100644 index a55e4815e5a..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCallContext.htm +++ /dev/null @@ -1,9 +0,0 @@ -ServerCallContext Methods
    ServerCallContext Methods

    The ServerCallContext type exposes the following members.

    Methods
    -   - NameDescription
    Public methodCreatePropagationToken
    - Creates a propagation token to be used to propagate call context to a child call. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWriteResponseHeadersAsync
    - Asynchronously sends response headers for the current call to the client. This method may only be invoked once for each call and needs to be invoked - before any response messages are written. Writing the first response message implicitly sends empty response headers if WriteResponseHeadersAsync haven't - been called yet. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm deleted file mode 100644 index c603f7c234f..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerCredentials.htm +++ /dev/null @@ -1,3 +0,0 @@ -ServerCredentials Methods
    ServerCredentials Methods

    The ServerCredentials type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm deleted file mode 100644 index 87d83868f72..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerPort.htm +++ /dev/null @@ -1,3 +0,0 @@ -ServerPort Methods
    ServerPort Methods

    The ServerPort type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm deleted file mode 100644 index 11b14918718..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition.htm +++ /dev/null @@ -1,5 +0,0 @@ -ServerServiceDefinition Methods
    ServerServiceDefinition Methods

    The ServerServiceDefinition type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberCreateBuilder
    - Creates a new builder object for ServerServiceDefinition. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm deleted file mode 100644 index dccc51fe172..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.htm +++ /dev/null @@ -1,13 +0,0 @@ -Builder Methods
    Builder Methods

    The ServerServiceDefinitionBuilder type exposes the following members.

    Methods
    -   - NameDescription
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ClientStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a client streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, DuplexStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a bidirectional streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ServerStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a server streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, UnaryServerMethodTRequest, TResponse)
    - Adds a definitions for a single request - single response method. -
    Public methodBuild
    - Creates an immutable ServerServiceDefinition from this builder. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm deleted file mode 100644 index b8e44358fb1..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServerPortCollection.htm +++ /dev/null @@ -1,10 +0,0 @@ -ServerPortCollection Methods
    ServerPortCollection Methods

    The ServerServerPortCollection type exposes the following members.

    Methods
    -   - NameDescription
    Public methodAdd(ServerPort)
    - Adds a new port on which server should listen. - Only call this before Start(). -

    Return Value

    Type: 
    The port on which server will be listening.
    Public methodAdd(String, Int32, ServerCredentials)
    - Adds a new port on which server should listen. -

    Return Value

    Type: 
    The port on which server will be listening.
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetEnumerator
    - Gets enumerator for this collection. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm deleted file mode 100644 index 08c940b8316..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.htm +++ /dev/null @@ -1,8 +0,0 @@ -ServiceDefinitionCollection Methods
    ServiceDefinitionCollection Methods

    The ServerServiceDefinitionCollection type exposes the following members.

    Methods
    -   - NameDescription
    Public methodAdd
    - Adds a service definition to the server. This is how you register - handlers for a service with the server. Only call this before Start(). -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetEnumerator
    - Gets enumerator for this collection. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm deleted file mode 100644 index b4ef394fbe7..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslCredentials.htm +++ /dev/null @@ -1,3 +0,0 @@ -SslCredentials Methods
    SslCredentials Methods

    The SslCredentials type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm deleted file mode 100644 index cbe8f3e41ff..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_SslServerCredentials.htm +++ /dev/null @@ -1,3 +0,0 @@ -SslServerCredentials Methods
    SslServerCredentials Methods

    The SslServerCredentials type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm deleted file mode 100644 index 8a477adba01..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Status.htm +++ /dev/null @@ -1,5 +0,0 @@ -Status Methods
    Status Methods

    The Status type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    - Returns a String that represents the current Status. -
    (Overrides ValueTypeToString.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm deleted file mode 100644 index bade3e79f22..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.htm +++ /dev/null @@ -1,12 +0,0 @@ -AsyncStreamExtensions Methods
    AsyncStreamExtensions Methods

    The AsyncStreamExtensions type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberForEachAsyncT
    - Reads the entire stream and executes an async action for each element. -
    Public methodStatic memberToListAsyncT
    - Reads the entire stream and creates a list containing all the elements read. -
    Public methodStatic memberWriteAllAsyncT(IServerStreamWriterT, IEnumerableT)
    - Writes all elements from given enumerable to the stream. -
    Public methodStatic memberWriteAllAsyncT(IClientStreamWriterT, IEnumerableT, Boolean)
    - Writes all elements from given enumerable to the stream. - Completes the stream afterwards unless close = false. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm deleted file mode 100644 index cf12124a285..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_BenchmarkUtil.htm +++ /dev/null @@ -1,5 +0,0 @@ -BenchmarkUtil Methods
    BenchmarkUtil Methods

    The BenchmarkUtil type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberRunBenchmark
    - Runs a simple benchmark preceded by warmup phase. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm deleted file mode 100644 index 9b150653cb9..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_Utils_Preconditions.htm +++ /dev/null @@ -1,15 +0,0 @@ -Preconditions Methods \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm b/doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm deleted file mode 100644 index abfae7f92a8..00000000000 --- a/doc/ref/csharp/html/html/Methods_T_Grpc_Core_WriteOptions.htm +++ /dev/null @@ -1,3 +0,0 @@ -WriteOptions Methods
    WriteOptions Methods

    The WriteOptions type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/N_Grpc_Auth.htm b/doc/ref/csharp/html/html/N_Grpc_Auth.htm deleted file mode 100644 index 2b80dc68bd1..00000000000 --- a/doc/ref/csharp/html/html/N_Grpc_Auth.htm +++ /dev/null @@ -1,6 +0,0 @@ -Grpc.Auth Namespace
    Grpc.Auth Namespace
    Provides OAuth2 based authentication for gRPC. Grpc.Auth currently consists of a set of very lightweight wrappers and uses C# Google.Apis.Auth library.
    Classes
    -   - ClassDescription
    Public classAuthInterceptors
    - Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that - inherit from ClientBase). -
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/N_Grpc_Core.htm b/doc/ref/csharp/html/html/N_Grpc_Core.htm deleted file mode 100644 index f11118e1322..00000000000 --- a/doc/ref/csharp/html/html/N_Grpc_Core.htm +++ /dev/null @@ -1,133 +0,0 @@ -Grpc.Core Namespace
    Grpc.Core Namespace
    Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic. - -
    Classes
    -   - ClassDescription
    Public classAsyncClientStreamingCallTRequest, TResponse
    - Return type for client streaming calls. -
    Public classAsyncDuplexStreamingCallTRequest, TResponse
    - Return type for bidirectional streaming calls. -
    Public classAsyncServerStreamingCallTResponse
    - Return type for server streaming calls. -
    Public classAsyncUnaryCallTResponse
    - Return type for single request - single response call. -
    Public classCalls
    - Helper methods for generated clients to make RPC calls. - Most users will use this class only indirectly and will be - making calls using client object generated from protocol - buffer definition files. -
    Public classChannel
    - Represents a gRPC channel. Channels are an abstraction of long-lived connections to remote servers. - More client objects can reuse the same channel. Creating a channel is an expensive operation compared to invoking - a remote call so in general you should reuse a single channel for as many calls as possible. -
    Public classChannelOption
    - Channel option specified when creating a channel. - Corresponds to grpc_channel_args from grpc/grpc.h. -
    Public classChannelOptions
    - Defines names of supported channel options. -
    Public classClientBase
    - Base class for client-side stubs. -
    Public classContextPropagationOptions
    - Options for ContextPropagationToken. -
    Public classContextPropagationToken
    - Token for propagating context of server side handlers to child calls. - In situations when a backend is making calls to another backend, - it makes sense to propagate properties like deadline and cancellation - token of the server call to the child call. - The gRPC native layer provides some other contexts (like tracing context) that - are not accessible to explicitly C# layer, but this token still allows propagating them. -
    Public classCredentials
    - Client-side credentials. Used for creation of a secure channel. -
    Public classGrpcEnvironment
    - Encapsulates initialization and shutdown of gRPC library. -
    Public classKeyCertificatePair
    - Key certificate pair (in PEM encoding). -
    Public classMarshallerT
    - Encapsulates the logic for serializing and deserializing messages. -
    Public classMarshallers
    - Utilities for creating marshallers. -
    Public classMetadata
    - A collection of metadata entries that can be exchanged during a call. - gRPC supports these types of metadata: -
    • Request headers - are sent by the client at the beginning of a remote call before any request messages are sent.
    • Response headers - are sent by the server at the beginning of a remote call handler before any response messages are sent.
    • Response trailers - are sent by the server at the end of a remote call along with resulting call status.
    Public classMethodTRequest, TResponse
    - A description of a remote method. -
    Public classRpcException
    - Thrown when remote procedure call fails. Every RpcException is associated with a resulting Status of the call. -
    Public classServer
    - gRPC server. A single server can server arbitrary number of services and can listen on more than one ports. -
    Public classServerServerPortCollection
    - Collection of server ports. -
    Public classServerServiceDefinitionCollection
    - Collection of service definitions. -
    Public classServerCallContext
    - Context for a server-side call. -
    Public classServerCredentials
    - Server side credentials. -
    Public classServerPort
    - A port exposed by a server. -
    Public classServerServiceDefinition
    - Mapping of method names to server call handlers. - Normally, the ServerServiceDefinition objects will be created by the BindService factory method - that is part of the autogenerated code for a protocol buffers service definition. -
    Public classServerServiceDefinitionBuilder
    - Builder class for ServerServiceDefinition. -
    Public classSslCredentials
    - Client-side SSL credentials. -
    Public classSslServerCredentials
    - Server-side SSL credentials. -
    Public classVersionInfo
    - Provides info about current version of gRPC. -
    Public classWriteOptions
    - Options for write operations. -
    Structures
    -   - StructureDescription
    Public structureCallInvocationDetailsTRequest, TResponse
    - Details about a client-side call to be invoked. -
    Public structureCallOptions
    - Options for calls made by client. -
    Public structureMetadataEntry
    - Metadata entry -
    Public structureStatus
    - Represents RPC result, which consists of StatusCode and an optional detail string. -
    Interfaces
    Delegates
    Enumerations
    -   - EnumerationDescription
    Public enumerationChannelOptionOptionType
    - Type of ChannelOption. -
    Public enumerationChannelState
    - Connectivity state of a channel. - Based on grpc_connectivity_state from grpc/grpc.h -
    Public enumerationCompressionLevel
    - Compression level based on grpc_compression_level from grpc/compression.h -
    Public enumerationMethodType
    - Method types supported by gRPC. -
    Public enumerationStatusCode
    - Result of a remote procedure call. - Based on grpc_status_code from grpc/status.h -
    Public enumerationWriteFlags
    - Flags for write operations. -
    See Also

    Reference

    [Grpc.Core.Channel]
    [Grpc.Core.Server]
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm b/doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm deleted file mode 100644 index e0f8f6fae66..00000000000 --- a/doc/ref/csharp/html/html/N_Grpc_Core_Logging.htm +++ /dev/null @@ -1,5 +0,0 @@ -Grpc.Core.Logging Namespace
    Grpc.Core.Logging Namespace
    Provides functionality to redirect gRPC logs to application-specified destination.
    Classes
    -   - ClassDescription
    Public classConsoleLogger
    Logger that logs to System.Console.
    Interfaces
    -   - InterfaceDescription
    Public interfaceILogger
    For logging messages.
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm b/doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm deleted file mode 100644 index 07574fcfa8a..00000000000 --- a/doc/ref/csharp/html/html/N_Grpc_Core_Utils.htm +++ /dev/null @@ -1,9 +0,0 @@ -Grpc.Core.Utils Namespace
    Grpc.Core.Utils Namespace
    Various utilities for gRPC C#.
    Classes
    -   - ClassDescription
    Public classAsyncStreamExtensions
    - Extension methods that simplify work with gRPC streaming calls. -
    Public classBenchmarkUtil
    - Utility methods to run microbenchmarks. -
    Public classPreconditions
    - Utility methods to simplify checking preconditions in the code. -
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm deleted file mode 100644 index bdfed5182c4..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_CallInvocationDetails_2__ctor.htm +++ /dev/null @@ -1,9 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Constructor
    CallInvocationDetailsTRequest, TResponse Constructor
    Overload List
    -   - NameDescription
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, MethodTRequest, TResponse, CallOptions)
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, MethodTRequest, TResponse, String, CallOptions)
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, String, String, MarshallerTRequest, MarshallerTResponse, CallOptions)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm deleted file mode 100644 index f9d3b537559..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_ChannelOption__ctor.htm +++ /dev/null @@ -1,7 +0,0 @@ -ChannelOption Constructor
    ChannelOption Constructor
    Overload List
    -   - NameDescription
    Public methodChannelOption(String, Int32)
    - Creates a channel option with an integer value. -
    Public methodChannelOption(String, String)
    - Creates a channel option with a string value. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm deleted file mode 100644 index ba465a1a919..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Channel__ctor.htm +++ /dev/null @@ -1,8 +0,0 @@ -Channel Constructor \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm deleted file mode 100644 index 534abce9e1a..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Error.htm +++ /dev/null @@ -1,3 +0,0 @@ -ConsoleLogger.Error Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm deleted file mode 100644 index 463eff04863..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.htm +++ /dev/null @@ -1,3 +0,0 @@ -ConsoleLogger.Warning Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm deleted file mode 100644 index 38204e336d7..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Error.htm +++ /dev/null @@ -1,3 +0,0 @@ -ILogger.Error Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm deleted file mode 100644 index bfb1543a0a8..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Logging_ILogger_Warning.htm +++ /dev/null @@ -1,3 +0,0 @@ -ILogger.Warning Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm deleted file mode 100644 index 58693f58dde..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Add.htm +++ /dev/null @@ -1,3 +0,0 @@ -Metadata.Add Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm deleted file mode 100644 index 7355bb6cd1c..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Metadata_Entry__ctor.htm +++ /dev/null @@ -1,7 +0,0 @@ -Entry Constructor \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm deleted file mode 100644 index aa64c87501d..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_RpcException__ctor.htm +++ /dev/null @@ -1,7 +0,0 @@ -RpcException Constructor
    RpcException Constructor
    Overload List
    -   - NameDescription
    Public methodRpcException(Status)
    - Creates a new RpcException associated with given status. -
    Public methodRpcException(Status, String)
    - Creates a new RpcException associated with given status and message. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm deleted file mode 100644 index 534bdc60015..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.htm +++ /dev/null @@ -1,11 +0,0 @@ -Builder.AddMethod Method
    BuilderAddMethod Method
    Overload List
    -   - NameDescription
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ClientStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a client streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, DuplexStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a bidirectional streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ServerStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a server streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, UnaryServerMethodTRequest, TResponse)
    - Adds a definitions for a single request - single response method. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm deleted file mode 100644 index 9e5a944189e..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Server_ServerPortCollection_Add.htm +++ /dev/null @@ -1,8 +0,0 @@ -ServerPortCollection.Add Method
    ServerPortCollectionAdd Method
    Overload List
    -   - NameDescription
    Public methodAdd(ServerPort)
    - Adds a new port on which server should listen. - Only call this before Start(). -

    Return Value

    Type: 
    The port on which server will be listening.
    Public methodAdd(String, Int32, ServerCredentials)
    - Adds a new port on which server should listen. -

    Return Value

    Type: 
    The port on which server will be listening.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm deleted file mode 100644 index 93219ea1528..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_SslCredentials__ctor.htm +++ /dev/null @@ -1,12 +0,0 @@ -SslCredentials Constructor
    SslCredentials Constructor
    Overload List
    -   - NameDescription
    Public methodSslCredentials
    - Creates client-side SSL credentials loaded from - disk file pointed to by the GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable. - If that fails, gets the roots certificates from a well known place on disk. -
    Public methodSslCredentials(String)
    - Creates client-side SSL credentials from - a string containing PEM encoded root certificates. -
    Public methodSslCredentials(String, KeyCertificatePair)
    - Creates client-side SSL credentials. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm deleted file mode 100644 index f8506d929d0..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_SslServerCredentials__ctor.htm +++ /dev/null @@ -1,9 +0,0 @@ -SslServerCredentials Constructor \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm deleted file mode 100644 index af7b9578870..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncStreamExtensions.WriteAllAsync Method
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm deleted file mode 100644 index 4b4a4afdf9f..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.htm +++ /dev/null @@ -1,7 +0,0 @@ -Preconditions.CheckArgument Method
    PreconditionsCheckArgument Method
    Overload List
    -   - NameDescription
    Public methodStatic memberCheckArgument(Boolean)
    - Throws ArgumentException if condition is false. -
    Public methodStatic memberCheckArgument(Boolean, String)
    - Throws ArgumentException with given message if condition is false. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm deleted file mode 100644 index 3d1638474d8..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.htm +++ /dev/null @@ -1,7 +0,0 @@ -Preconditions.CheckNotNull Method \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm b/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm deleted file mode 100644 index 2e223aabd9c..00000000000 --- a/doc/ref/csharp/html/html/Overload_Grpc_Core_Utils_Preconditions_CheckState.htm +++ /dev/null @@ -1,7 +0,0 @@ -Preconditions.CheckState Method
    PreconditionsCheckState Method
    Overload List
    -   - NameDescription
    Public methodStatic memberCheckState(Boolean)
    - Throws InvalidOperationException if condition is false. -
    Public methodStatic memberCheckState(Boolean, String)
    - Throws InvalidOperationException with given message if condition is false. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm deleted file mode 100644 index dd5c5dd8994..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_RequestStream.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).RequestStream Property
    AsyncClientStreamingCallTRequest, TResponseRequestStream Property
    - Async stream to send streaming requests. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IClientStreamWriter<TRequest> RequestStream { get; }

    Property Value

    Type: IClientStreamWriterTRequest
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm deleted file mode 100644 index ba27809a918..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).ResponseAsync Property
    AsyncClientStreamingCallTRequest, TResponseResponseAsync Property
    - Asynchronous call result. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<TResponse> ResponseAsync { get; }

    Property Value

    Type: TaskTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm deleted file mode 100644 index f8feea36072..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncClientStreamingCall_2_ResponseHeadersAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property
    AsyncClientStreamingCallTRequest, TResponseResponseHeadersAsync Property
    - Asynchronous access to response headers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<Metadata> ResponseHeadersAsync { get; }

    Property Value

    Type: TaskMetadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm deleted file mode 100644 index 8fc64e45204..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_RequestStream.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).RequestStream Property
    AsyncDuplexStreamingCallTRequest, TResponseRequestStream Property
    - Async stream to send streaming requests. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IClientStreamWriter<TRequest> RequestStream { get; }

    Property Value

    Type: IClientStreamWriterTRequest
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm deleted file mode 100644 index daad15a8386..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseHeadersAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).ResponseHeadersAsync Property
    AsyncDuplexStreamingCallTRequest, TResponseResponseHeadersAsync Property
    - Asynchronous access to response headers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<Metadata> ResponseHeadersAsync { get; }

    Property Value

    Type: TaskMetadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm deleted file mode 100644 index 04ce5676e8a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncDuplexStreamingCall_2_ResponseStream.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse).ResponseStream Property
    AsyncDuplexStreamingCallTRequest, TResponseResponseStream Property
    - Async stream to read streaming responses. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IAsyncStreamReader<TResponse> ResponseStream { get; }

    Property Value

    Type: IAsyncStreamReaderTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm deleted file mode 100644 index 5459b72aa3c..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseHeadersAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncServerStreamingCall(TResponse).ResponseHeadersAsync Property
    AsyncServerStreamingCallTResponseResponseHeadersAsync Property
    - Asynchronous access to response headers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<Metadata> ResponseHeadersAsync { get; }

    Property Value

    Type: TaskMetadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm deleted file mode 100644 index 6b61832b994..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncServerStreamingCall_1_ResponseStream.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncServerStreamingCall(TResponse).ResponseStream Property
    AsyncServerStreamingCallTResponseResponseStream Property
    - Async stream to read streaming responses. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IAsyncStreamReader<TResponse> ResponseStream { get; }

    Property Value

    Type: IAsyncStreamReaderTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm deleted file mode 100644 index 4a18d95120a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncUnaryCall(TResponse).ResponseAsync Property
    AsyncUnaryCallTResponseResponseAsync Property
    - Asynchronous call result. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<TResponse> ResponseAsync { get; }

    Property Value

    Type: TaskTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm b/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm deleted file mode 100644 index 6a7f3e47699..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_AsyncUnaryCall_1_ResponseHeadersAsync.htm +++ /dev/null @@ -1,8 +0,0 @@ -AsyncUnaryCall(TResponse).ResponseHeadersAsync Property
    AsyncUnaryCallTResponseResponseHeadersAsync Property
    - Asynchronous access to response headers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task<Metadata> ResponseHeadersAsync { get; }

    Property Value

    Type: TaskMetadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm deleted file mode 100644 index afa494b08ae..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Channel.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).Channel Property
    CallInvocationDetailsTRequest, TResponseChannel Property
    - Get channel associated with this call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Channel Channel { get; }

    Property Value

    Type: Channel
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm deleted file mode 100644 index ba7a0b8836e..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Host.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).Host Property
    CallInvocationDetailsTRequest, TResponseHost Property
    - Get name of host. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Host { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm deleted file mode 100644 index dee17bc75d1..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Method.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).Method Property
    CallInvocationDetailsTRequest, TResponseMethod Property
    - Gets name of method to be called. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Method { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm deleted file mode 100644 index 0f4f99fd834..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_Options.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).Options Property
    CallInvocationDetailsTRequest, TResponseOptions Property
    - Gets the call options. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CallOptions Options { get; }

    Property Value

    Type: CallOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm deleted file mode 100644 index 4ef69892f7a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_RequestMarshaller.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).RequestMarshaller Property
    CallInvocationDetailsTRequest, TResponseRequestMarshaller Property
    - Gets marshaller used to serialize requests. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Marshaller<TRequest> RequestMarshaller { get; }

    Property Value

    Type: MarshallerTRequest
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm deleted file mode 100644 index cf7ab522972..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallInvocationDetails_2_ResponseMarshaller.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallInvocationDetails(TRequest, TResponse).ResponseMarshaller Property
    CallInvocationDetailsTRequest, TResponseResponseMarshaller Property
    - Gets marshaller used to deserialized responses. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Marshaller<TResponse> ResponseMarshaller { get; }

    Property Value

    Type: MarshallerTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm deleted file mode 100644 index 6a8197573b5..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_CancellationToken.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallOptions.CancellationToken Property
    CallOptionsCancellationToken Property
    - Token that can be used for cancelling the call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CancellationToken CancellationToken { get; }

    Property Value

    Type: CancellationToken
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm deleted file mode 100644 index 548fcb23668..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Deadline.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallOptions.Deadline Property
    CallOptionsDeadline Property
    - Call deadline. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Nullable<DateTime> Deadline { get; }

    Property Value

    Type: NullableDateTime
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm deleted file mode 100644 index db51ee0a440..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_Headers.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallOptions.Headers Property
    CallOptionsHeaders Property
    - Headers to send at the beginning of the call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata Headers { get; }

    Property Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm deleted file mode 100644 index da8f4e13bfb..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_PropagationToken.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallOptions.PropagationToken Property
    CallOptionsPropagationToken Property
    - Token for propagating parent call context. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ContextPropagationToken PropagationToken { get; }

    Property Value

    Type: ContextPropagationToken
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm b/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm deleted file mode 100644 index 152cdbfe577..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_CallOptions_WriteOptions.htm +++ /dev/null @@ -1,8 +0,0 @@ -CallOptions.WriteOptions Property
    CallOptionsWriteOptions Property
    - Write options that will be used for this call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public WriteOptions WriteOptions { get; }

    Property Value

    Type: WriteOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm deleted file mode 100644 index b0f2b73e9c3..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_IntValue.htm +++ /dev/null @@ -1,8 +0,0 @@ -ChannelOption.IntValue Property
    ChannelOptionIntValue Property
    - Gets the integer value the ChannelOption. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int IntValue { get; }

    Property Value

    Type: Int32
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm deleted file mode 100644 index a3a9edd0c10..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Name.htm +++ /dev/null @@ -1,8 +0,0 @@ -ChannelOption.Name Property
    ChannelOptionName Property
    - Gets the name of the ChannelOption. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Name { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm deleted file mode 100644 index 84d11ef572e..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_StringValue.htm +++ /dev/null @@ -1,8 +0,0 @@ -ChannelOption.StringValue Property
    ChannelOptionStringValue Property
    - Gets the string value the ChannelOption. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string StringValue { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm deleted file mode 100644 index 73edb0c1edf..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ChannelOption_Type.htm +++ /dev/null @@ -1,8 +0,0 @@ -ChannelOption.Type Property
    ChannelOptionType Property
    - Gets the type of the ChannelOption. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ChannelOptionOptionType Type { get; }

    Property Value

    Type: ChannelOptionOptionType
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm deleted file mode 100644 index c7361e00949..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_ResolvedTarget.htm +++ /dev/null @@ -1,6 +0,0 @@ -Channel.ResolvedTarget Property
    ChannelResolvedTarget Property
    Resolved address of the remote endpoint in URI format.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string ResolvedTarget { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm deleted file mode 100644 index e83762887a6..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_State.htm +++ /dev/null @@ -1,8 +0,0 @@ -Channel.State Property
    ChannelState Property
    - Gets current connectivity state of this channel. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ChannelState State { get; }

    Property Value

    Type: ChannelState
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm deleted file mode 100644 index 217fc2e6356..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Channel_Target.htm +++ /dev/null @@ -1,6 +0,0 @@ -Channel.Target Property
    ChannelTarget Property
    The original target used to create the channel.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Target { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm deleted file mode 100644 index dddf0640593..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Channel.htm +++ /dev/null @@ -1,8 +0,0 @@ -ClientBase.Channel Property
    ClientBaseChannel Property
    - Channel associated with this client. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Channel Channel { get; }

    Property Value

    Type: Channel
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm deleted file mode 100644 index 66a8facf144..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_HeaderInterceptor.htm +++ /dev/null @@ -1,11 +0,0 @@ -ClientBase.HeaderInterceptor Property
    ClientBaseHeaderInterceptor Property
    - Can be used to register a custom header (request metadata) interceptor. - The interceptor is invoked each time a new call on this client is started. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public HeaderInterceptor HeaderInterceptor { get; set; }

    Property Value

    Type: HeaderInterceptor
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm deleted file mode 100644 index 002bb8c37f0..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ClientBase_Host.htm +++ /dev/null @@ -1,13 +0,0 @@ -ClientBase.Host Property
    ClientBaseHost Property
    - gRPC supports multiple "hosts" being served by a single server. - This property can be used to set the target host explicitly. - By default, this will be set to null with the meaning - "use default host". -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Host { get; set; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm deleted file mode 100644 index ad33aaaba9a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateCancellation.htm +++ /dev/null @@ -1,6 +0,0 @@ -ContextPropagationOptions.IsPropagateCancellation Property
    ContextPropagationOptionsIsPropagateCancellation Property
    true if parent call's cancellation token should be propagated to the child call.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool IsPropagateCancellation { get; }

    Property Value

    Type: Boolean
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm deleted file mode 100644 index 2bc3899a353..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ContextPropagationOptions_IsPropagateDeadline.htm +++ /dev/null @@ -1,6 +0,0 @@ -ContextPropagationOptions.IsPropagateDeadline Property
    ContextPropagationOptionsIsPropagateDeadline Property
    true if parent call's deadline should be propagated to the child call.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool IsPropagateDeadline { get; }

    Property Value

    Type: Boolean
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm deleted file mode 100644 index 84395031519..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Credentials_Insecure.htm +++ /dev/null @@ -1,9 +0,0 @@ -Credentials.Insecure Property
    CredentialsInsecure Property
    - Returns instance of credential that provides no security and - will result in creating an unsecure channel with no encryption whatsoever. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Credentials Insecure { get; }

    Property Value

    Type: Credentials
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm b/doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm deleted file mode 100644 index 80899119ae3..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_GrpcEnvironment_Logger.htm +++ /dev/null @@ -1,8 +0,0 @@ -GrpcEnvironment.Logger Property
    GrpcEnvironmentLogger Property
    - Gets application-wide logger used by gRPC. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static ILogger Logger { get; }

    Property Value

    Type: ILogger
    The logger.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm deleted file mode 100644 index f5e8c182d54..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IAsyncStreamWriter_1_WriteOptions.htm +++ /dev/null @@ -1,12 +0,0 @@ -IAsyncStreamWriter(T).WriteOptions Property
    IAsyncStreamWriterTWriteOptions Property
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    WriteOptions WriteOptions { get; set; }

    Property Value

    Type: WriteOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm deleted file mode 100644 index 7066162e6ea..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IHasWriteOptions_WriteOptions.htm +++ /dev/null @@ -1,9 +0,0 @@ -IHasWriteOptions.WriteOptions Property
    IHasWriteOptionsWriteOptions Property
    - Gets or sets the write options. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    WriteOptions WriteOptions { get; set; }

    Property Value

    Type: WriteOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm deleted file mode 100644 index 184b6951343..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_FullName.htm +++ /dev/null @@ -1,8 +0,0 @@ -IMethod.FullName Property
    IMethodFullName Property
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    string FullName { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm deleted file mode 100644 index d3cdbe69ca2..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Name.htm +++ /dev/null @@ -1,7 +0,0 @@ -IMethod.Name Property
    IMethodName Property
    - Gets the unqualified name of the method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    string Name { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm deleted file mode 100644 index be6ab350cb8..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_ServiceName.htm +++ /dev/null @@ -1,7 +0,0 @@ -IMethod.ServiceName Property
    IMethodServiceName Property
    - Gets the name of the service to which this method belongs. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    string ServiceName { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm b/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm deleted file mode 100644 index 11c3202509c..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_IMethod_Type.htm +++ /dev/null @@ -1,7 +0,0 @@ -IMethod.Type Property
    IMethodType Property
    - Gets the type of the method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    MethodType Type { get; }

    Property Value

    Type: MethodType
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm b/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm deleted file mode 100644 index bf8f4937e98..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_CertificateChain.htm +++ /dev/null @@ -1,8 +0,0 @@ -KeyCertificatePair.CertificateChain Property
    KeyCertificatePairCertificateChain Property
    - PEM encoded certificate chain. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string CertificateChain { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm b/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm deleted file mode 100644 index 18d60bd9c50..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_KeyCertificatePair_PrivateKey.htm +++ /dev/null @@ -1,8 +0,0 @@ -KeyCertificatePair.PrivateKey Property
    KeyCertificatePairPrivateKey Property
    - PEM encoded private key. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string PrivateKey { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm deleted file mode 100644 index a87677c41a3..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Deserializer.htm +++ /dev/null @@ -1,8 +0,0 @@ -Marshaller(T).Deserializer Property
    MarshallerTDeserializer Property
    - Gets the deserializer function. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Func<byte[], T> Deserializer { get; }

    Property Value

    Type: FuncByte, T
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm deleted file mode 100644 index bd190da05f1..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Marshaller_1_Serializer.htm +++ /dev/null @@ -1,8 +0,0 @@ -Marshaller(T).Serializer Property
    MarshallerTSerializer Property
    - Gets the serializer function. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Func<T, byte[]> Serializer { get; }

    Property Value

    Type: FuncT, Byte
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm deleted file mode 100644 index b53093deeeb..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Marshallers_StringMarshaller.htm +++ /dev/null @@ -1,8 +0,0 @@ -Marshallers.StringMarshaller Property
    MarshallersStringMarshaller Property
    - Returns a marshaller for string type. This is useful for testing. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static Marshaller<string> StringMarshaller { get; }

    Property Value

    Type: MarshallerString
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm deleted file mode 100644 index 0adfe74acdc..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Count.htm +++ /dev/null @@ -1,6 +0,0 @@ -Metadata.Count Property
    MetadataCount Property

    [Missing <summary> documentation for "P:Grpc.Core.Metadata.Count"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int Count { get; }

    Property Value

    Type: Int32

    Implements

    ICollectionTCount
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm deleted file mode 100644 index ebb7d2b7668..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_IsBinary.htm +++ /dev/null @@ -1,8 +0,0 @@ -Metadata.Entry.IsBinary Property
    MetadataEntryIsBinary Property
    - Returns true if this entry is a binary-value entry. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool IsBinary { get; }

    Property Value

    Type: Boolean
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm deleted file mode 100644 index 512d08485e9..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Key.htm +++ /dev/null @@ -1,8 +0,0 @@ -Metadata.Entry.Key Property
    MetadataEntryKey Property
    - Gets the metadata entry key. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Key { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm deleted file mode 100644 index ec9eca51d67..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_Value.htm +++ /dev/null @@ -1,8 +0,0 @@ -Metadata.Entry.Value Property
    MetadataEntryValue Property
    - Gets the string value of this metadata entry. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Value { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm deleted file mode 100644 index 3595389c5ff..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Entry_ValueBytes.htm +++ /dev/null @@ -1,8 +0,0 @@ -Metadata.Entry.ValueBytes Property
    MetadataEntryValueBytes Property
    - Gets the binary value of this metadata entry. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public byte[] ValueBytes { get; }

    Property Value

    Type: Byte
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm deleted file mode 100644 index a1fb1319f65..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_IsReadOnly.htm +++ /dev/null @@ -1,6 +0,0 @@ -Metadata.IsReadOnly Property
    MetadataIsReadOnly Property

    [Missing <summary> documentation for "P:Grpc.Core.Metadata.IsReadOnly"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool IsReadOnly { get; }

    Property Value

    Type: Boolean

    Implements

    ICollectionTIsReadOnly
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm deleted file mode 100644 index fd7720c022a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Metadata_Item.htm +++ /dev/null @@ -1,12 +0,0 @@ -Metadata.Item Property
    MetadataItem Property

    [Missing <summary> documentation for "P:Grpc.Core.Metadata.Item(System.Int32)"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public MetadataEntry this[
    -	int index
    -] { get; set; }

    Parameters

    index
    Type: SystemInt32

    Property Value

    Type: MetadataEntry

    Implements

    IListTItemInt32
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm deleted file mode 100644 index 798145c1d75..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_FullName.htm +++ /dev/null @@ -1,9 +0,0 @@ -Method(TRequest, TResponse).FullName Property
    MethodTRequest, TResponseFullName Property
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string FullName { get; }

    Property Value

    Type: String

    Implements

    IMethodFullName
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm deleted file mode 100644 index 5c160363c2c..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Name.htm +++ /dev/null @@ -1,8 +0,0 @@ -Method(TRequest, TResponse).Name Property
    MethodTRequest, TResponseName Property
    - Gets the unqualified name of the method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Name { get; }

    Property Value

    Type: String

    Implements

    IMethodName
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm deleted file mode 100644 index f815e048a5a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_RequestMarshaller.htm +++ /dev/null @@ -1,8 +0,0 @@ -Method(TRequest, TResponse).RequestMarshaller Property
    MethodTRequest, TResponseRequestMarshaller Property
    - Gets the marshaller used for request messages. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Marshaller<TRequest> RequestMarshaller { get; }

    Property Value

    Type: MarshallerTRequest
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm deleted file mode 100644 index c740f69055c..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ResponseMarshaller.htm +++ /dev/null @@ -1,8 +0,0 @@ -Method(TRequest, TResponse).ResponseMarshaller Property
    MethodTRequest, TResponseResponseMarshaller Property
    - Gets the marshaller used for response messages. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Marshaller<TResponse> ResponseMarshaller { get; }

    Property Value

    Type: MarshallerTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm deleted file mode 100644 index 4c624ec23fc..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_ServiceName.htm +++ /dev/null @@ -1,8 +0,0 @@ -Method(TRequest, TResponse).ServiceName Property
    MethodTRequest, TResponseServiceName Property
    - Gets the name of the service to which this method belongs. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string ServiceName { get; }

    Property Value

    Type: String

    Implements

    IMethodServiceName
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm deleted file mode 100644 index cf11c80a213..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Method_2_Type.htm +++ /dev/null @@ -1,8 +0,0 @@ -Method(TRequest, TResponse).Type Property
    MethodTRequest, TResponseType Property
    - Gets the type of the method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public MethodType Type { get; }

    Property Value

    Type: MethodType

    Implements

    IMethodType
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm b/doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm deleted file mode 100644 index 77b27e6329a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_RpcException_Status.htm +++ /dev/null @@ -1,8 +0,0 @@ -RpcException.Status Property
    RpcExceptionStatus Property
    - Resulting status of the call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status Status { get; }

    Property Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm deleted file mode 100644 index 3469098d466..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_CancellationToken.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.CancellationToken Property
    ServerCallContextCancellationToken Property
    Cancellation token signals when call is cancelled.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public CancellationToken CancellationToken { get; }

    Property Value

    Type: CancellationToken
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm deleted file mode 100644 index 04f0c5bdca1..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Deadline.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.Deadline Property
    ServerCallContextDeadline Property
    Deadline for this RPC.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public DateTime Deadline { get; }

    Property Value

    Type: DateTime
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm deleted file mode 100644 index da5aad6fafe..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Host.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.Host Property
    ServerCallContextHost Property
    Name of host called in this RPC.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Host { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm deleted file mode 100644 index db3f95622cc..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Method.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.Method Property
    ServerCallContextMethod Property
    Name of method called in this RPC.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Method { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm deleted file mode 100644 index 8e0f860de27..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Peer.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.Peer Property
    ServerCallContextPeer Property
    Address of the remote endpoint in URI format.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Peer { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm deleted file mode 100644 index bb58c57c0e7..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_RequestHeaders.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.RequestHeaders Property
    ServerCallContextRequestHeaders Property
    Initial metadata sent by client.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata RequestHeaders { get; }

    Property Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm deleted file mode 100644 index 19a73237364..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_ResponseTrailers.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCallContext.ResponseTrailers Property
    ServerCallContextResponseTrailers Property
    Trailers to send back to client after RPC finishes.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Metadata ResponseTrailers { get; }

    Property Value

    Type: Metadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm deleted file mode 100644 index 5b03b0e5d0f..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_Status.htm +++ /dev/null @@ -1,8 +0,0 @@ -ServerCallContext.Status Property
    ServerCallContextStatus Property
    Status to send back to client after RPC finishes.

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Status Status { get; set; }

    Property Value

    Type: Status
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm deleted file mode 100644 index 8dfeedef47a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCallContext_WriteOptions.htm +++ /dev/null @@ -1,12 +0,0 @@ -ServerCallContext.WriteOptions Property
    ServerCallContextWriteOptions Property
    - Allows setting write options for the following write. - For streaming response calls, this property is also exposed as on IServerStreamWriter for convenience. - Both properties are backed by the same underlying value. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public WriteOptions WriteOptions { get; set; }

    Property Value

    Type: WriteOptions
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm deleted file mode 100644 index d856dd43d15..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerCredentials_Insecure.htm +++ /dev/null @@ -1,9 +0,0 @@ -ServerCredentials.Insecure Property
    ServerCredentialsInsecure Property
    - Returns instance of credential that provides no security and - will result in creating an unsecure server port with no encryption whatsoever. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static ServerCredentials Insecure { get; }

    Property Value

    Type: ServerCredentials
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm deleted file mode 100644 index aad095da63e..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_BoundPort.htm +++ /dev/null @@ -1,8 +0,0 @@ -ServerPort.BoundPort Property
    ServerPortBoundPort Property

    [Missing <summary> documentation for "P:Grpc.Core.ServerPort.BoundPort"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int BoundPort { get; }

    Property Value

    Type: Int32
    - The port actually bound by the server. This is useful if you let server - pick port automatically. PickUnused
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm deleted file mode 100644 index 0a79a8f1408..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Credentials.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerPort.Credentials Property
    ServerPortCredentials Property

    [Missing <summary> documentation for "P:Grpc.Core.ServerPort.Credentials"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerCredentials Credentials { get; }

    Property Value

    Type: ServerCredentials
    The server credentials.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm deleted file mode 100644 index 0f3c317e80a..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Host.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerPort.Host Property
    ServerPortHost Property

    [Missing <summary> documentation for "P:Grpc.Core.ServerPort.Host"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Host { get; }

    Property Value

    Type: String
    The host.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm b/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm deleted file mode 100644 index ff0dbf2fc64..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_ServerPort_Port.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerPort.Port Property
    ServerPortPort Property

    [Missing <summary> documentation for "P:Grpc.Core.ServerPort.Port"]

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public int Port { get; }

    Property Value

    Type: Int32
    The port.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm deleted file mode 100644 index 20f00da2524..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Server_Ports.htm +++ /dev/null @@ -1,9 +0,0 @@ -Server.Ports Property
    ServerPorts Property
    - Ports on which the server will listen once started. Register a port with this - server by adding its definition to this collection. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServerPortCollection Ports { get; }

    Property Value

    Type: ServerServerPortCollection
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm deleted file mode 100644 index 560058b02c5..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Server_Services.htm +++ /dev/null @@ -1,9 +0,0 @@ -Server.Services Property
    ServerServices Property
    - Services that will be exported by the server once started. Register a service with this - server by adding its definition to this collection. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public ServerServiceDefinitionCollection Services { get; }

    Property Value

    Type: ServerServiceDefinitionCollection
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm deleted file mode 100644 index 32c2269549e..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Server_ShutdownTask.htm +++ /dev/null @@ -1,8 +0,0 @@ -Server.ShutdownTask Property
    ServerShutdownTask Property
    - To allow awaiting termination of the server. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public Task ShutdownTask { get; }

    Property Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm b/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm deleted file mode 100644 index 1965210d159..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_KeyCertificatePair.htm +++ /dev/null @@ -1,9 +0,0 @@ -SslCredentials.KeyCertificatePair Property
    SslCredentialsKeyCertificatePair Property
    - Client side key and certificate pair. - If null, client will not use key and certificate pair. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public KeyCertificatePair KeyCertificatePair { get; }

    Property Value

    Type: KeyCertificatePair
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm b/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm deleted file mode 100644 index 8f65d01dd7e..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_SslCredentials_RootCertificates.htm +++ /dev/null @@ -1,8 +0,0 @@ -SslCredentials.RootCertificates Property
    SslCredentialsRootCertificates Property
    - PEM encoding of the server root certificates. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string RootCertificates { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm deleted file mode 100644 index cb77ad552d1..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_ForceClientAuthentication.htm +++ /dev/null @@ -1,8 +0,0 @@ -SslServerCredentials.ForceClientAuthentication Property
    SslServerCredentialsForceClientAuthentication Property
    - If true, the authenticity of client check will be enforced. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public bool ForceClientAuthentication { get; }

    Property Value

    Type: Boolean
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm deleted file mode 100644 index dd500f01513..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_KeyCertificatePairs.htm +++ /dev/null @@ -1,8 +0,0 @@ -SslServerCredentials.KeyCertificatePairs Property
    SslServerCredentialsKeyCertificatePairs Property
    - Key-certificate pairs. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public IList<KeyCertificatePair> KeyCertificatePairs { get; }

    Property Value

    Type: IListKeyCertificatePair
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm b/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm deleted file mode 100644 index b23261096ee..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_SslServerCredentials_RootCertificates.htm +++ /dev/null @@ -1,8 +0,0 @@ -SslServerCredentials.RootCertificates Property
    SslServerCredentialsRootCertificates Property
    - PEM encoded client root certificates. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string RootCertificates { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm deleted file mode 100644 index 356aa05fbac..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Status_Detail.htm +++ /dev/null @@ -1,8 +0,0 @@ -Status.Detail Property
    StatusDetail Property
    - Gets the detail. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public string Detail { get; }

    Property Value

    Type: String
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm b/doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm deleted file mode 100644 index 1fdd439f5d8..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_Status_StatusCode.htm +++ /dev/null @@ -1,8 +0,0 @@ -Status.StatusCode Property
    StatusStatusCode Property
    - Gets the gRPC status code. OK indicates success, all other values indicate an error. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public StatusCode StatusCode { get; }

    Property Value

    Type: StatusCode
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm b/doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm deleted file mode 100644 index fa3b57ca884..00000000000 --- a/doc/ref/csharp/html/html/P_Grpc_Core_WriteOptions_Flags.htm +++ /dev/null @@ -1,8 +0,0 @@ -WriteOptions.Flags Property
    WriteOptionsFlags Property
    - Gets the write flags. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public WriteFlags Flags { get; }

    Property Value

    Type: WriteFlags
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm deleted file mode 100644 index 86ce8b14978..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.htm +++ /dev/null @@ -1,9 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse) Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm deleted file mode 100644 index 40c4705d232..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.htm +++ /dev/null @@ -1,9 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse) Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm deleted file mode 100644 index 7d3a77b2cbd..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.htm +++ /dev/null @@ -1,7 +0,0 @@ -AsyncServerStreamingCall(TResponse) Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm deleted file mode 100644 index d9e266b4371..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_AsyncUnaryCall_1.htm +++ /dev/null @@ -1,7 +0,0 @@ -AsyncUnaryCall(TResponse) Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm deleted file mode 100644 index 258b83626a1..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallInvocationDetails_2.htm +++ /dev/null @@ -1,15 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Properties
    CallInvocationDetailsTRequest, TResponse Properties

    The CallInvocationDetailsTRequest, TResponse generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyChannel
    - Get channel associated with this call. -
    Public propertyHost
    - Get name of host. -
    Public propertyMethod
    - Gets name of method to be called. -
    Public propertyOptions
    - Gets the call options. -
    Public propertyRequestMarshaller
    - Gets marshaller used to serialize requests. -
    Public propertyResponseMarshaller
    - Gets marshaller used to deserialized responses. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm deleted file mode 100644 index 53786c4c482..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_CallOptions.htm +++ /dev/null @@ -1,13 +0,0 @@ -CallOptions Properties
    CallOptions Properties

    The CallOptions type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCancellationToken
    - Token that can be used for cancelling the call. -
    Public propertyDeadline
    - Call deadline. -
    Public propertyHeaders
    - Headers to send at the beginning of the call. -
    Public propertyPropagationToken
    - Token for propagating parent call context. -
    Public propertyWriteOptions
    - Write options that will be used for this call. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm deleted file mode 100644 index d2b2c776ea7..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Channel.htm +++ /dev/null @@ -1,5 +0,0 @@ -Channel Properties
    Channel Properties

    The Channel type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyResolvedTarget
    Resolved address of the remote endpoint in URI format.
    Public propertyState
    - Gets current connectivity state of this channel. -
    Public propertyTarget
    The original target used to create the channel.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm deleted file mode 100644 index a788a1d8093..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ChannelOption.htm +++ /dev/null @@ -1,11 +0,0 @@ -ChannelOption Properties
    ChannelOption Properties

    The ChannelOption type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyIntValue
    - Gets the integer value the ChannelOption. -
    Public propertyName
    - Gets the name of the ChannelOption. -
    Public propertyStringValue
    - Gets the string value the ChannelOption. -
    Public propertyType
    - Gets the type of the ChannelOption. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm deleted file mode 100644 index eb63eea16b6..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ClientBase.htm +++ /dev/null @@ -1,13 +0,0 @@ -ClientBase Properties
    ClientBase Properties

    The ClientBase type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyChannel
    - Channel associated with this client. -
    Public propertyHeaderInterceptor
    - Can be used to register a custom header (request metadata) interceptor. - The interceptor is invoked each time a new call on this client is started. -
    Public propertyHost
    - gRPC supports multiple "hosts" being served by a single server. - This property can be used to set the target host explicitly. - By default, this will be set to null with the meaning - "use default host". -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm deleted file mode 100644 index f32cf204694..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ContextPropagationOptions.htm +++ /dev/null @@ -1,3 +0,0 @@ -ContextPropagationOptions Properties
    ContextPropagationOptions Properties

    The ContextPropagationOptions type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyIsPropagateCancellation
    true if parent call's cancellation token should be propagated to the child call.
    Public propertyIsPropagateDeadline
    true if parent call's deadline should be propagated to the child call.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm deleted file mode 100644 index acc2578652e..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Credentials.htm +++ /dev/null @@ -1,6 +0,0 @@ -Credentials Properties
    Credentials Properties

    The Credentials type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberInsecure
    - Returns instance of credential that provides no security and - will result in creating an unsecure channel with no encryption whatsoever. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm deleted file mode 100644 index 438d48f35a6..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_GrpcEnvironment.htm +++ /dev/null @@ -1,5 +0,0 @@ -GrpcEnvironment Properties
    GrpcEnvironment Properties

    The GrpcEnvironment type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberLogger
    - Gets application-wide logger used by gRPC. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm deleted file mode 100644 index 53aa3b5f90a..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamReader_1.htm +++ /dev/null @@ -1,3 +0,0 @@ -IAsyncStreamReader(T) Properties
    IAsyncStreamReaderT Properties

    The IAsyncStreamReaderT generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCurrent (Inherited from IAsyncEnumeratorT.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm deleted file mode 100644 index ad71094d4b9..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IAsyncStreamWriter_1.htm +++ /dev/null @@ -1,8 +0,0 @@ -IAsyncStreamWriter(T) Properties
    IAsyncStreamWriterT Properties

    The IAsyncStreamWriterT generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm deleted file mode 100644 index f04ab0d40d9..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IClientStreamWriter_1.htm +++ /dev/null @@ -1,8 +0,0 @@ -IClientStreamWriter(T) Properties
    IClientStreamWriterT Properties

    The IClientStreamWriterT generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm deleted file mode 100644 index fd1f5ca0c20..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IHasWriteOptions.htm +++ /dev/null @@ -1,5 +0,0 @@ -IHasWriteOptions Properties
    IHasWriteOptions Properties

    The IHasWriteOptions type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Gets or sets the write options. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm deleted file mode 100644 index efa7de8377e..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IMethod.htm +++ /dev/null @@ -1,12 +0,0 @@ -IMethod Properties
    IMethod Properties

    The IMethod type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyFullName
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -
    Public propertyName
    - Gets the unqualified name of the method. -
    Public propertyServiceName
    - Gets the name of the service to which this method belongs. -
    Public propertyType
    - Gets the type of the method. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm deleted file mode 100644 index 0bebdd57119..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_IServerStreamWriter_1.htm +++ /dev/null @@ -1,8 +0,0 @@ -IServerStreamWriter(T) Properties
    IServerStreamWriterT Properties

    The IServerStreamWriterT generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm deleted file mode 100644 index 286a0cec9e5..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_KeyCertificatePair.htm +++ /dev/null @@ -1,7 +0,0 @@ -KeyCertificatePair Properties
    KeyCertificatePair Properties

    The KeyCertificatePair type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCertificateChain
    - PEM encoded certificate chain. -
    Public propertyPrivateKey
    - PEM encoded private key. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm deleted file mode 100644 index dd39e5d5b3b..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshaller_1.htm +++ /dev/null @@ -1,7 +0,0 @@ -Marshaller(T) Properties
    MarshallerT Properties

    The MarshallerT generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyDeserializer
    - Gets the deserializer function. -
    Public propertySerializer
    - Gets the serializer function. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm deleted file mode 100644 index c104a3c2db1..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Marshallers.htm +++ /dev/null @@ -1,5 +0,0 @@ -Marshallers Properties
    Marshallers Properties

    The Marshallers type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberStringMarshaller
    - Returns a marshaller for string type. This is useful for testing. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm deleted file mode 100644 index 48674e9e0f2..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata.htm +++ /dev/null @@ -1,3 +0,0 @@ -Metadata Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm deleted file mode 100644 index 30f20816be5..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Metadata_Entry.htm +++ /dev/null @@ -1,11 +0,0 @@ -Entry Properties
    Entry Properties

    The MetadataEntry type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyIsBinary
    - Returns true if this entry is a binary-value entry. -
    Public propertyKey
    - Gets the metadata entry key. -
    Public propertyValue
    - Gets the string value of this metadata entry. -
    Public propertyValueBytes
    - Gets the binary value of this metadata entry. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm deleted file mode 100644 index 776f8035982..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Method_2.htm +++ /dev/null @@ -1,16 +0,0 @@ -Method(TRequest, TResponse) Properties
    MethodTRequest, TResponse Properties

    The MethodTRequest, TResponse generic type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyFullName
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -
    Public propertyName
    - Gets the unqualified name of the method. -
    Public propertyRequestMarshaller
    - Gets the marshaller used for request messages. -
    Public propertyResponseMarshaller
    - Gets the marshaller used for response messages. -
    Public propertyServiceName
    - Gets the name of the service to which this method belongs. -
    Public propertyType
    - Gets the type of the method. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm deleted file mode 100644 index 2d40825eef7..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_RpcException.htm +++ /dev/null @@ -1,5 +0,0 @@ -RpcException Properties
    RpcException Properties

    The RpcException type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyData
    Gets a collection of key/value pairs that provide additional user-defined information about the exception.
    (Inherited from Exception.)
    Public propertyHelpLink
    Gets or sets a link to the help file associated with this exception.
    (Inherited from Exception.)
    Public propertyHResult
    Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.
    (Inherited from Exception.)
    Public propertyInnerException
    Gets the Exception instance that caused the current exception.
    (Inherited from Exception.)
    Public propertyMessage
    Gets a message that describes the current exception.
    (Inherited from Exception.)
    Public propertySource
    Gets or sets the name of the application or the object that causes the error.
    (Inherited from Exception.)
    Public propertyStackTrace
    Gets a string representation of the immediate frames on the call stack.
    (Inherited from Exception.)
    Public propertyStatus
    - Resulting status of the call. -
    Public propertyTargetSite
    Gets the method that throws the current exception.
    (Inherited from Exception.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm deleted file mode 100644 index 38762cc5a86..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Server.htm +++ /dev/null @@ -1,11 +0,0 @@ -Server Properties
    Server Properties

    The Server type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyPorts
    - Ports on which the server will listen once started. Register a port with this - server by adding its definition to this collection. -
    Public propertyServices
    - Services that will be exported by the server once started. Register a service with this - server by adding its definition to this collection. -
    Public propertyShutdownTask
    - To allow awaiting termination of the server. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm deleted file mode 100644 index 4d5d01ccccb..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCallContext.htm +++ /dev/null @@ -1,7 +0,0 @@ -ServerCallContext Properties
    ServerCallContext Properties

    The ServerCallContext type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCancellationToken
    Cancellation token signals when call is cancelled.
    Public propertyDeadline
    Deadline for this RPC.
    Public propertyHost
    Name of host called in this RPC.
    Public propertyMethod
    Name of method called in this RPC.
    Public propertyPeer
    Address of the remote endpoint in URI format.
    Public propertyRequestHeaders
    Initial metadata sent by client.
    Public propertyResponseTrailers
    Trailers to send back to client after RPC finishes.
    Public propertyStatus
    Status to send back to client after RPC finishes.
    Public propertyWriteOptions
    - Allows setting write options for the following write. - For streaming response calls, this property is also exposed as on IServerStreamWriter for convenience. - Both properties are backed by the same underlying value. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm deleted file mode 100644 index 701aba7ee8a..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerCredentials.htm +++ /dev/null @@ -1,6 +0,0 @@ -ServerCredentials Properties
    ServerCredentials Properties

    The ServerCredentials type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberInsecure
    - Returns instance of credential that provides no security and - will result in creating an unsecure server port with no encryption whatsoever. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm deleted file mode 100644 index 454a82575e4..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_ServerPort.htm +++ /dev/null @@ -1,3 +0,0 @@ -ServerPort Properties \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm deleted file mode 100644 index b808cf05c44..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslCredentials.htm +++ /dev/null @@ -1,8 +0,0 @@ -SslCredentials Properties
    SslCredentials Properties

    The SslCredentials type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyKeyCertificatePair
    - Client side key and certificate pair. - If null, client will not use key and certificate pair. -
    Public propertyRootCertificates
    - PEM encoding of the server root certificates. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm deleted file mode 100644 index f879ba0fd44..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_SslServerCredentials.htm +++ /dev/null @@ -1,9 +0,0 @@ -SslServerCredentials Properties
    SslServerCredentials Properties

    The SslServerCredentials type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyForceClientAuthentication
    - If true, the authenticity of client check will be enforced. -
    Public propertyKeyCertificatePairs
    - Key-certificate pairs. -
    Public propertyRootCertificates
    - PEM encoded client root certificates. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm deleted file mode 100644 index cb8c929e813..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_Status.htm +++ /dev/null @@ -1,7 +0,0 @@ -Status Properties
    Status Properties

    The Status type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyDetail
    - Gets the detail. -
    Public propertyStatusCode
    - Gets the gRPC status code. OK indicates success, all other values indicate an error. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm b/doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm deleted file mode 100644 index b6e2b08ab04..00000000000 --- a/doc/ref/csharp/html/html/Properties_T_Grpc_Core_WriteOptions.htm +++ /dev/null @@ -1,5 +0,0 @@ -WriteOptions Properties
    WriteOptions Properties

    The WriteOptions type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyFlags
    - Gets the write flags. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/R_Project_Documentation.htm b/doc/ref/csharp/html/html/R_Project_Documentation.htm deleted file mode 100644 index 1c2487cd40d..00000000000 --- a/doc/ref/csharp/html/html/R_Project_Documentation.htm +++ /dev/null @@ -1,11 +0,0 @@ -Namespaces
    Namespaces
    Namespaces
    NamespaceDescription
    Grpc.Auth
    Provides OAuth2 based authentication for gRPC. Grpc.Auth currently consists of a set of very lightweight wrappers and uses C# Google.Apis.Auth library.
    Grpc.Core
    Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic. - -
    Grpc.Core.Logging
    Provides functionality to redirect gRPC logs to application-specified destination.
    Grpc.Core.Utils
    Various utilities for gRPC C#.
    - \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm b/doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm deleted file mode 100644 index 43e48608454..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Auth_AuthInterceptors.htm +++ /dev/null @@ -1,13 +0,0 @@ -AuthInterceptors Class
    AuthInterceptors Class
    - Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that - inherit from ClientBase). -
    Inheritance Hierarchy
    SystemObject
      Grpc.AuthAuthInterceptors

    Namespace: Grpc.Auth
    Assembly: Grpc.Auth (in Grpc.Auth.dll) Version: 0.7.0.0
    Syntax
    public static class AuthInterceptors

    The AuthInterceptors type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberFromAccessToken
    - Creates OAuth2 interceptor that will use given access token as authorization. -
    Public methodStatic memberFromCredential
    - Creates interceptor that will obtain access token from any credential type that implements - ITokenAccess. (e.g. GoogleCredential). -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm deleted file mode 100644 index 3422080dea7..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncClientStreamingCall_2.htm +++ /dev/null @@ -1,33 +0,0 @@ -AsyncClientStreamingCall(TRequest, TResponse) Class
    AsyncClientStreamingCallTRequest, TResponse Class
    - Return type for client streaming calls. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreAsyncClientStreamingCallTRequest, TResponse

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class AsyncClientStreamingCall<TRequest, TResponse> : IDisposable
    -

    Type Parameters

    TRequest
    Request message type for this call.
    TResponse
    Response message type for this call.

    The AsyncClientStreamingCallTRequest, TResponse type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyRequestStream
    - Async stream to send streaming requests. -
    Public propertyResponseAsync
    - Asynchronous call result. -
    Public propertyResponseHeadersAsync
    - Asynchronous access to response headers. -
    Top
    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetAwaiter
    - Allows awaiting this object directly. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm deleted file mode 100644 index 6c860bf2d8d..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncDuplexStreamingCall_2.htm +++ /dev/null @@ -1,31 +0,0 @@ -AsyncDuplexStreamingCall(TRequest, TResponse) Class
    AsyncDuplexStreamingCallTRequest, TResponse Class
    - Return type for bidirectional streaming calls. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreAsyncDuplexStreamingCallTRequest, TResponse

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class AsyncDuplexStreamingCall<TRequest, TResponse> : IDisposable
    -

    Type Parameters

    TRequest
    Request message type for this call.
    TResponse
    Response message type for this call.

    The AsyncDuplexStreamingCallTRequest, TResponse type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyRequestStream
    - Async stream to send streaming requests. -
    Public propertyResponseHeadersAsync
    - Asynchronous access to response headers. -
    Public propertyResponseStream
    - Async stream to read streaming responses. -
    Top
    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm deleted file mode 100644 index 1e7a2737c7a..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncServerStreamingCall_1.htm +++ /dev/null @@ -1,29 +0,0 @@ -AsyncServerStreamingCall(TResponse) Class
    AsyncServerStreamingCallTResponse Class
    - Return type for server streaming calls. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreAsyncServerStreamingCallTResponse

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class AsyncServerStreamingCall<TResponse> : IDisposable
    -

    Type Parameters

    TResponse
    Response message type for this call.

    The AsyncServerStreamingCallTResponse type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyResponseHeadersAsync
    - Asynchronous access to response headers. -
    Public propertyResponseStream
    - Async stream to read streaming responses. -
    Top
    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (response stream has been fully read), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm deleted file mode 100644 index 0ab03663d8d..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_AsyncUnaryCall_1.htm +++ /dev/null @@ -1,31 +0,0 @@ -AsyncUnaryCall(TResponse) Class
    AsyncUnaryCallTResponse Class
    - Return type for single request - single response call. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreAsyncUnaryCallTResponse

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class AsyncUnaryCall<TResponse> : IDisposable
    -

    Type Parameters

    TResponse
    Response message type for this call.

    The AsyncUnaryCallTResponse type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyResponseAsync
    - Asynchronous call result. -
    Public propertyResponseHeadersAsync
    - Asynchronous access to response headers. -
    Top
    Methods
    -   - NameDescription
    Public methodDispose
    - Provides means to cleanup after the call. - If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - As a result, all resources being used by the call should be released eventually. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetAwaiter
    - Allows awaiting this object directly. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetStatus
    - Gets the call status if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetTrailers
    - Gets the call trailing metadata if the call has already finished. - Throws InvalidOperationException otherwise. -
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm deleted file mode 100644 index b5f61545935..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_CallInvocationDetails_2.htm +++ /dev/null @@ -1,33 +0,0 @@ -CallInvocationDetails(TRequest, TResponse) Structure
    CallInvocationDetailsTRequest, TResponse Structure
    - Details about a client-side call to be invoked. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public struct CallInvocationDetails<TRequest, TResponse>
    -

    Type Parameters

    TRequest
    Request message type for the call.
    TResponse
    Response message type for the call.

    The CallInvocationDetailsTRequest, TResponse type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, MethodTRequest, TResponse, CallOptions)
    - Initializes a new instance of the CallInvocationDetailsTRequest, TResponse struct. -
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, MethodTRequest, TResponse, String, CallOptions)
    - Initializes a new instance of the CallInvocationDetailsTRequest, TResponse struct. -
    Public methodCallInvocationDetailsTRequest, TResponse(Channel, String, String, MarshallerTRequest, MarshallerTResponse, CallOptions)
    - Initializes a new instance of the CallInvocationDetailsTRequest, TResponse struct. -
    Top
    Properties
    -   - NameDescription
    Public propertyChannel
    - Get channel associated with this call. -
    Public propertyHost
    - Get name of host. -
    Public propertyMethod
    - Gets name of method to be called. -
    Public propertyOptions
    - Gets the call options. -
    Public propertyRequestMarshaller
    - Gets marshaller used to serialize requests. -
    Public propertyResponseMarshaller
    - Gets marshaller used to deserialized responses. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns the fully qualified type name of this instance.
    (Inherited from ValueType.)
    Public methodWithOptions
    - Returns new instance of CallInvocationDetailsTRequest, TResponse with - Options set to the value provided. Values of all other fields are preserved. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm deleted file mode 100644 index 0db2469e4df..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_CallOptions.htm +++ /dev/null @@ -1,31 +0,0 @@ -CallOptions Structure
    CallOptions Structure
    - Options for calls made by client. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public struct CallOptions

    The CallOptions type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodCallOptions
    - Creates a new instance of CallOptions struct. -
    Top
    Properties
    -   - NameDescription
    Public propertyCancellationToken
    - Token that can be used for cancelling the call. -
    Public propertyDeadline
    - Call deadline. -
    Public propertyHeaders
    - Headers to send at the beginning of the call. -
    Public propertyPropagationToken
    - Token for propagating parent call context. -
    Public propertyWriteOptions
    - Write options that will be used for this call. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns the fully qualified type name of this instance.
    (Inherited from ValueType.)
    Public methodWithCancellationToken
    - Returns new instance of CallOptions with - CancellationToken set to the value provided. Values of all other fields are preserved. -
    Public methodWithDeadline
    - Returns new instance of CallOptions with - Deadline set to the value provided. Values of all other fields are preserved. -
    Public methodWithHeaders
    - Returns new instance of CallOptions with - Headers set to the value provided. Values of all other fields are preserved. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm deleted file mode 100644 index c34f86a93a7..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Calls.htm +++ /dev/null @@ -1,24 +0,0 @@ -Calls Class
    Calls Class
    - Helper methods for generated clients to make RPC calls. - Most users will use this class only indirectly and will be - making calls using client object generated from protocol - buffer definition files. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreCalls

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class Calls

    The Calls type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberAsyncClientStreamingCallTRequest, TResponse
    - Invokes a client streaming call asynchronously. - In client streaming scenario, client sends a stream of requests and server responds with a single response. -
    Public methodStatic memberAsyncDuplexStreamingCallTRequest, TResponse
    - Invokes a duplex streaming call asynchronously. - In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses. - The response stream is completely independent and both side can be sending messages at the same time. -
    Public methodStatic memberAsyncServerStreamingCallTRequest, TResponse
    - Invokes a server streaming call asynchronously. - In server streaming scenario, client sends on request and server responds with a stream of responses. -
    Public methodStatic memberAsyncUnaryCallTRequest, TResponse
    - Invokes a simple remote call asynchronously. -
    Public methodStatic memberBlockingUnaryCallTRequest, TResponse
    - Invokes a simple remote call in a blocking fashion. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm deleted file mode 100644 index d6c6eed4e19..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Channel.htm +++ /dev/null @@ -1,31 +0,0 @@ -Channel Class
    Channel Class
    - Represents a gRPC channel. Channels are an abstraction of long-lived connections to remote servers. - More client objects can reuse the same channel. Creating a channel is an expensive operation compared to invoking - a remote call so in general you should reuse a single channel for as many calls as possible. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreChannel

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class Channel

    The Channel type exposes the following members.

    Constructors
    Properties
    -   - NameDescription
    Public propertyResolvedTarget
    Resolved address of the remote endpoint in URI format.
    Public propertyState
    - Gets current connectivity state of this channel. -
    Public propertyTarget
    The original target used to create the channel.
    Top
    Methods
    -   - NameDescription
    Public methodConnectAsync
    - Allows explicitly requesting channel to connect without starting an RPC. - Returned task completes once state Ready was seen. If the deadline is reached, - or channel enters the FatalFailure state, the task is cancelled. - There is no need to call this explicitly unless your use case requires that. - Starting an RPC on a new channel will request connection implicitly. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodShutdownAsync
    - Waits until there are no more active calls for this channel and then cleans up - resources used by this channel. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWaitForStateChangedAsync
    - Returned tasks completes once channel state has become different from - given lastObservedState. - If deadline is reached or and error occurs, returned task is cancelled. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm deleted file mode 100644 index 14b7971d947..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption.htm +++ /dev/null @@ -1,23 +0,0 @@ -ChannelOption Class
    ChannelOption Class
    - Channel option specified when creating a channel. - Corresponds to grpc_channel_args from grpc/grpc.h. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreChannelOption

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class ChannelOption

    The ChannelOption type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodChannelOption(String, Int32)
    - Creates a channel option with an integer value. -
    Public methodChannelOption(String, String)
    - Creates a channel option with a string value. -
    Top
    Properties
    -   - NameDescription
    Public propertyIntValue
    - Gets the integer value the ChannelOption. -
    Public propertyName
    - Gets the name of the ChannelOption. -
    Public propertyStringValue
    - Gets the string value the ChannelOption. -
    Public propertyType
    - Gets the type of the ChannelOption. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm deleted file mode 100644 index 91a0a50eb44..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOption_OptionType.htm +++ /dev/null @@ -1,9 +0,0 @@ -ChannelOption.OptionType Enumeration
    ChannelOptionOptionType Enumeration
    - Type of ChannelOption. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public enum OptionType
    Members
    -   - Member nameValueDescription
    Integer0 - Channel option with integer value. -
    String1 - Channel option with string value. -
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm deleted file mode 100644 index 3cc92c92887..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelOptions.htm +++ /dev/null @@ -1,7 +0,0 @@ -ChannelOptions Class
    ChannelOptions Class
    - Defines names of supported channel options. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreChannelOptions

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class ChannelOptions

    The ChannelOptions type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberCensus
    Enable census for tracing and stats collection
    Public fieldStatic memberDefaultAuthority
    Default authority for calls.
    Public fieldStatic memberHttp2InitialSequenceNumber
    Initial sequence number for http2 transports
    Public fieldStatic memberMaxConcurrentStreams
    Maximum number of concurrent incoming streams to allow on a http2 connection
    Public fieldStatic memberMaxMessageLength
    Maximum message length that the channel can receive
    Public fieldStatic memberPrimaryUserAgentString
    Primary user agent: goes at the start of the user-agent metadata
    Public fieldStatic memberSecondaryUserAgentString
    Secondary user agent: goes at the end of the user-agent metadata
    Public fieldStatic memberSslTargetNameOverride
    Override SSL target check. Only to be used for testing.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm deleted file mode 100644 index c6ae17da9f9..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ChannelState.htm +++ /dev/null @@ -1,16 +0,0 @@ -ChannelState Enumeration
    ChannelState Enumeration
    - Connectivity state of a channel. - Based on grpc_connectivity_state from grpc/grpc.h -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public enum ChannelState
    Members
    -   - Member nameValueDescription
    Idle0 - Channel is idle -
    Connecting1 - Channel is connecting -
    Ready2 - Channel is ready for work -
    TransientFailure3 - Channel has seen a failure but expects to recover -
    FatalFailure4 - Channel has seen a failure that it cannot recover from -
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm deleted file mode 100644 index 540a782cb19..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ClientBase.htm +++ /dev/null @@ -1,24 +0,0 @@ -ClientBase Class
    ClientBase Class
    - Base class for client-side stubs. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreClientBase

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public abstract class ClientBase

    The ClientBase type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodClientBase
    - Initializes a new instance of ClientBase class. -
    Top
    Properties
    -   - NameDescription
    Public propertyChannel
    - Channel associated with this client. -
    Public propertyHeaderInterceptor
    - Can be used to register a custom header (request metadata) interceptor. - The interceptor is invoked each time a new call on this client is started. -
    Public propertyHost
    - gRPC supports multiple "hosts" being served by a single server. - This property can be used to set the target host explicitly. - By default, this will be set to null with the meaning - "use default host". -
    Top
    Methods
    -   - NameDescription
    Protected methodCreateCallTRequest, TResponse
    - Creates a new call to given method. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm deleted file mode 100644 index d25edf3992a..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ClientStreamingServerMethod_2.htm +++ /dev/null @@ -1,21 +0,0 @@ -ClientStreamingServerMethod(TRequest, TResponse) Delegate
    ClientStreamingServerMethodTRequest, TResponse Delegate
    - Server-side handler for client streaming call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public delegate Task<TResponse> ClientStreamingServerMethod<TRequest, TResponse>(
    -	IAsyncStreamReader<TRequest> requestStream,
    -	ServerCallContext context
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    requestStream
    Type: Grpc.CoreIAsyncStreamReaderTRequest
    context
    Type: Grpc.CoreServerCallContext

    Type Parameters

    TRequest
    Request message type for this method.
    TResponse
    Response message type for this method.

    Return Value

    Type: TaskTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm b/doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm deleted file mode 100644 index 03ba649eebf..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_CompressionLevel.htm +++ /dev/null @@ -1,13 +0,0 @@ -CompressionLevel Enumeration
    CompressionLevel Enumeration
    - Compression level based on grpc_compression_level from grpc/compression.h -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public enum CompressionLevel
    Members
    -   - Member nameValueDescription
    None0 - No compression. -
    Low1 - Low compression. -
    Medium2 - Medium compression. -
    High3 - High compression. -
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm deleted file mode 100644 index 42d34fb120e..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationOptions.htm +++ /dev/null @@ -1,15 +0,0 @@ -ContextPropagationOptions Class
    ContextPropagationOptions Class
    - Options for ContextPropagationToken. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreContextPropagationOptions

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ContextPropagationOptions

    The ContextPropagationOptions type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodContextPropagationOptions
    - Creates new context propagation options. -
    Top
    Properties
    -   - NameDescription
    Public propertyIsPropagateCancellation
    true if parent call's cancellation token should be propagated to the child call.
    Public propertyIsPropagateDeadline
    true if parent call's deadline should be propagated to the child call.
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Fields
    -   - NameDescription
    Public fieldStatic memberDefault
    - The context propagation options that will be used by default. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm deleted file mode 100644 index 305d4504395..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ContextPropagationToken.htm +++ /dev/null @@ -1,10 +0,0 @@ -ContextPropagationToken Class
    ContextPropagationToken Class
    - Token for propagating context of server side handlers to child calls. - In situations when a backend is making calls to another backend, - it makes sense to propagate properties like deadline and cancellation - token of the server call to the child call. - The gRPC native layer provides some other contexts (like tracing context) that - are not accessible to explicitly C# layer, but this token still allows propagating them. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreContextPropagationToken

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ContextPropagationToken

    The ContextPropagationToken type exposes the following members.

    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm deleted file mode 100644 index 9668d4cc6ac..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Credentials.htm +++ /dev/null @@ -1,13 +0,0 @@ -Credentials Class
    Credentials Class
    - Client-side credentials. Used for creation of a secure channel. -
    Inheritance Hierarchy

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public abstract class Credentials

    The Credentials type exposes the following members.

    Constructors
    -   - NameDescription
    Protected methodCredentials
    Initializes a new instance of the Credentials class
    Top
    Properties
    -   - NameDescription
    Public propertyStatic memberInsecure
    - Returns instance of credential that provides no security and - will result in creating an unsecure channel with no encryption whatsoever. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm deleted file mode 100644 index dbc389d9e73..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_DuplexStreamingServerMethod_2.htm +++ /dev/null @@ -1,25 +0,0 @@ -DuplexStreamingServerMethod(TRequest, TResponse) Delegate
    DuplexStreamingServerMethodTRequest, TResponse Delegate
    - Server-side handler for bidi streaming call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public delegate Task DuplexStreamingServerMethod<TRequest, TResponse>(
    -	IAsyncStreamReader<TRequest> requestStream,
    -	IServerStreamWriter<TResponse> responseStream,
    -	ServerCallContext context
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    requestStream
    Type: Grpc.CoreIAsyncStreamReaderTRequest
    responseStream
    Type: Grpc.CoreIServerStreamWriterTResponse
    context
    Type: Grpc.CoreServerCallContext

    Type Parameters

    TRequest
    Request message type for this method.
    TResponse
    Response message type for this method.

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm b/doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm deleted file mode 100644 index 60f75418234..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_GrpcEnvironment.htm +++ /dev/null @@ -1,11 +0,0 @@ -GrpcEnvironment Class
    GrpcEnvironment Class
    - Encapsulates initialization and shutdown of gRPC library. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreGrpcEnvironment

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class GrpcEnvironment

    The GrpcEnvironment type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberLogger
    - Gets application-wide logger used by gRPC. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodStatic memberSetLogger
    - Sets the application-wide logger that should be used by gRPC. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm b/doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm deleted file mode 100644 index 9dac27d326a..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_HeaderInterceptor.htm +++ /dev/null @@ -1,19 +0,0 @@ -HeaderInterceptor Delegate
    HeaderInterceptor Delegate
    - Interceptor for call headers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public delegate void HeaderInterceptor(
    -	IMethod method,
    -	string authUri,
    -	Metadata metadata
    -)

    Parameters

    method
    Type: Grpc.CoreIMethod
    authUri
    Type: SystemString
    metadata
    Type: Grpc.CoreMetadata
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm deleted file mode 100644 index 2bdcee40bbc..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamReader_1.htm +++ /dev/null @@ -1,22 +0,0 @@ -IAsyncStreamReader(T) Interface
    IAsyncStreamReaderT Interface
    - A stream of messages to be read. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IAsyncStreamReader<T> : IAsyncEnumerator<T>, 
    -	IDisposable
    -

    Type Parameters

    T
    The message type.

    The IAsyncStreamReaderT type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCurrent (Inherited from IAsyncEnumeratorT.)
    Top
    Methods
    -   - NameDescription
    Public methodDispose
    Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
    (Inherited from IDisposable.)
    Public methodMoveNext (Inherited from IAsyncEnumeratorT.)
    Top
    Extension Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm deleted file mode 100644 index 7e1329f42ca..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IAsyncStreamWriter_1.htm +++ /dev/null @@ -1,16 +0,0 @@ -IAsyncStreamWriter(T) Interface
    IAsyncStreamWriterT Interface
    - A writable stream of messages. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IAsyncStreamWriter<T>
    -

    Type Parameters

    T
    The message type.

    The IAsyncStreamWriterT type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    Top
    Methods
    -   - NameDescription
    Public methodWriteAsync
    - Writes a single asynchronously. Only one write can be pending at a time. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm deleted file mode 100644 index 76f00b2615c..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IClientStreamWriter_1.htm +++ /dev/null @@ -1,27 +0,0 @@ -IClientStreamWriter(T) Interface
    IClientStreamWriterT Interface
    - Client-side writable stream of messages with Close capability. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IClientStreamWriter<T> : IAsyncStreamWriter<T>
    -

    Type Parameters

    T
    The message type.

    The IClientStreamWriterT type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    Methods
    -   - NameDescription
    Public methodCompleteAsync
    - Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this. -
    Public methodWriteAsync
    - Writes a single asynchronously. Only one write can be pending at a time. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    Extension Methods
    -   - NameDescription
    Public Extension MethodWriteAllAsyncT
    - Writes all elements from given enumerable to the stream. - Completes the stream afterwards unless close = false. -
    (Defined by AsyncStreamExtensions.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm deleted file mode 100644 index 1bacb29364a..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IHasWriteOptions.htm +++ /dev/null @@ -1,7 +0,0 @@ -IHasWriteOptions Interface
    IHasWriteOptions Interface
    - Allows sharing write options between ServerCallContext and other objects. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IHasWriteOptions

    The IHasWriteOptions type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Gets or sets the write options. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm deleted file mode 100644 index 30aa9670516..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IMethod.htm +++ /dev/null @@ -1,14 +0,0 @@ -IMethod Interface
    IMethod Interface
    - A non-generic representation of a remote method. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IMethod

    The IMethod type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyFullName
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -
    Public propertyName
    - Gets the unqualified name of the method. -
    Public propertyServiceName
    - Gets the name of the service to which this method belongs. -
    Public propertyType
    - Gets the type of the method. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm deleted file mode 100644 index 6618e97bb7c..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_IServerStreamWriter_1.htm +++ /dev/null @@ -1,24 +0,0 @@ -IServerStreamWriter(T) Interface
    IServerStreamWriterT Interface
    - A writable stream of messages that is used in server-side handlers. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface IServerStreamWriter<T> : IAsyncStreamWriter<T>
    -

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "T:Grpc.Core.IServerStreamWriter`1"]

    The IServerStreamWriterT type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyWriteOptions
    - Write options that will be used for the next write. - If null, default options will be used. - Once set, this property maintains its value across subsequent - writes. -
    (Inherited from IAsyncStreamWriterT.)
    Top
    Methods
    Extension Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm b/doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm deleted file mode 100644 index 920407df9e0..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_KeyCertificatePair.htm +++ /dev/null @@ -1,16 +0,0 @@ -KeyCertificatePair Class
    KeyCertificatePair Class
    - Key certificate pair (in PEM encoding). -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreKeyCertificatePair

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class KeyCertificatePair

    The KeyCertificatePair type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodKeyCertificatePair
    - Creates a new certificate chain - private key pair. -
    Top
    Properties
    -   - NameDescription
    Public propertyCertificateChain
    - PEM encoded certificate chain. -
    Public propertyPrivateKey
    - PEM encoded private key. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm deleted file mode 100644 index 2c7f26cd337..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ConsoleLogger.htm +++ /dev/null @@ -1,11 +0,0 @@ -ConsoleLogger Class
    ConsoleLogger Class
    Logger that logs to System.Console.
    Inheritance Hierarchy
    SystemObject
      Grpc.Core.LoggingConsoleLogger

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ConsoleLogger : ILogger

    The ConsoleLogger type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodConsoleLogger
    Creates a console logger not associated to any specific type.
    Top
    Methods
    -   - NameDescription
    Public methodDebug
    Logs a message with severity Debug.
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodError(String, Object)
    Logs a message with severity Error.
    Public methodError(Exception, String, Object)
    Logs a message and an associated exception with severity Error.
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodForTypeT
    - Returns a logger associated with the specified type. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodInfo
    Logs a message with severity Info.
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWarning(String, Object)
    Logs a message with severity Warning.
    Public methodWarning(Exception, String, Object)
    Logs a message and an associated exception with severity Warning.
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm deleted file mode 100644 index fccf15d67aa..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Logging_ILogger.htm +++ /dev/null @@ -1,3 +0,0 @@ -ILogger Interface
    ILogger Interface
    For logging messages.

    Namespace: Grpc.Core.Logging
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public interface ILogger

    The ILogger type exposes the following members.

    Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm deleted file mode 100644 index 58b4002b19c..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Marshaller_1.htm +++ /dev/null @@ -1,17 +0,0 @@ -Marshaller(T) Class
    MarshallerT Class
    - Encapsulates the logic for serializing and deserializing messages. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreMarshallerT

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class Marshaller<T>
    -

    Type Parameters

    T

    [Missing <typeparam name="T"/> documentation for "T:Grpc.Core.Marshaller`1"]

    The MarshallerT type exposes the following members.

    Constructors
    Properties
    -   - NameDescription
    Public propertyDeserializer
    - Gets the deserializer function. -
    Public propertySerializer
    - Gets the serializer function. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm deleted file mode 100644 index edea9cfc6a2..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Marshallers.htm +++ /dev/null @@ -1,13 +0,0 @@ -Marshallers Class
    Marshallers Class
    - Utilities for creating marshallers. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreMarshallers

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class Marshallers

    The Marshallers type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyStatic memberStringMarshaller
    - Returns a marshaller for string type. This is useful for testing. -
    Top
    Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm deleted file mode 100644 index 533818c0bb0..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Metadata.htm +++ /dev/null @@ -1,29 +0,0 @@ -Metadata Class
    Metadata Class
    - A collection of metadata entries that can be exchanged during a call. - gRPC supports these types of metadata: -
    • Request headers - are sent by the client at the beginning of a remote call before any request messages are sent.
    • Response headers - are sent by the server at the beginning of a remote call handler before any response messages are sent.
    • Response trailers - are sent by the server at the end of a remote call along with resulting call status.
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreMetadata

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class Metadata : IList<MetadataEntry>, 
    -	ICollection<MetadataEntry>, IEnumerable<MetadataEntry>, IEnumerable

    The Metadata type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodMetadata
    - Initializes a new instance of Metadata. -
    Top
    Properties
    -   - NameDescription
    Public propertyCount
    Public propertyIsReadOnly
    Public propertyItem
    Top
    Methods
    -   - NameDescription
    Public methodAdd(MetadataEntry)
    Public methodAdd(String, Byte)
    Public methodAdd(String, String)
    Public methodClear
    Public methodContains
    Public methodCopyTo
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetEnumerator
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodIndexOf
    Public methodInsert
    Public methodRemove
    Public methodRemoveAt
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Fields
    -   - NameDescription
    Public fieldStatic memberBinaryHeaderSuffix
    - All binary headers should have this suffix. -
    Public fieldStatic memberEmpty
    - An read-only instance of metadata containing no entries. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm deleted file mode 100644 index 41c1cf7d83b..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Metadata_Entry.htm +++ /dev/null @@ -1,24 +0,0 @@ -Metadata.Entry Structure
    MetadataEntry Structure
    - Metadata entry -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public struct Entry

    The MetadataEntry type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodMetadataEntry(String, Byte)
    - Initializes a new instance of the MetadataEntry struct with a binary value. -
    Public methodMetadataEntry(String, String)
    - Initializes a new instance of the MetadataEntry struct holding an ASCII value. -
    Top
    Properties
    -   - NameDescription
    Public propertyIsBinary
    - Returns true if this entry is a binary-value entry. -
    Public propertyKey
    - Gets the metadata entry key. -
    Public propertyValue
    - Gets the string value of this metadata entry. -
    Public propertyValueBytes
    - Gets the binary value of this metadata entry. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    - Returns a String that represents the current MetadataEntry. -
    (Overrides ValueTypeToString.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm b/doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm deleted file mode 100644 index 1059f758243..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_MethodType.htm +++ /dev/null @@ -1,5 +0,0 @@ -MethodType Enumeration
    MethodType Enumeration
    - Method types supported by gRPC. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public enum MethodType
    Members
    -   - Member nameValueDescription
    Unary0Single request sent from client, single response received from server.
    ClientStreaming1Stream of request sent from client, single response received from server.
    ServerStreaming2Single request sent from client, stream of responses received from server.
    DuplexStreaming3Both server and client can stream arbitrary number of requests and responses simultaneously.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm deleted file mode 100644 index 131cd238617..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Method_2.htm +++ /dev/null @@ -1,30 +0,0 @@ -Method(TRequest, TResponse) Class
    MethodTRequest, TResponse Class
    - A description of a remote method. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreMethodTRequest, TResponse

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class Method<TRequest, TResponse> : IMethod
    -

    Type Parameters

    TRequest
    Request message type for this method.
    TResponse
    Response message type for this method.

    The MethodTRequest, TResponse type exposes the following members.

    Constructors
    Properties
    -   - NameDescription
    Public propertyFullName
    - Gets the fully qualified name of the method. On the server side, methods are dispatched - based on this name. -
    Public propertyName
    - Gets the unqualified name of the method. -
    Public propertyRequestMarshaller
    - Gets the marshaller used for request messages. -
    Public propertyResponseMarshaller
    - Gets the marshaller used for response messages. -
    Public propertyServiceName
    - Gets the name of the service to which this method belongs. -
    Public propertyType
    - Gets the type of the method. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm b/doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm deleted file mode 100644 index e83a6a7e5b8..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_RpcException.htm +++ /dev/null @@ -1,21 +0,0 @@ -RpcException Class
    RpcException Class
    - Thrown when remote procedure call fails. Every RpcException is associated with a resulting Status of the call. -
    Inheritance Hierarchy

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class RpcException : Exception

    The RpcException type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodRpcException(Status)
    - Creates a new RpcException associated with given status. -
    Public methodRpcException(Status, String)
    - Creates a new RpcException associated with given status and message. -
    Top
    Properties
    -   - NameDescription
    Public propertyData
    Gets a collection of key/value pairs that provide additional user-defined information about the exception.
    (Inherited from Exception.)
    Public propertyHelpLink
    Gets or sets a link to the help file associated with this exception.
    (Inherited from Exception.)
    Public propertyHResult
    Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.
    (Inherited from Exception.)
    Public propertyInnerException
    Gets the Exception instance that caused the current exception.
    (Inherited from Exception.)
    Public propertyMessage
    Gets a message that describes the current exception.
    (Inherited from Exception.)
    Public propertySource
    Gets or sets the name of the application or the object that causes the error.
    (Inherited from Exception.)
    Public propertyStackTrace
    Gets a string representation of the immediate frames on the call stack.
    (Inherited from Exception.)
    Public propertyStatus
    - Resulting status of the call. -
    Public propertyTargetSite
    Gets the method that throws the current exception.
    (Inherited from Exception.)
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetBaseException
    When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.
    (Inherited from Exception.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetObjectData
    When overridden in a derived class, sets the SerializationInfo with information about the exception.
    (Inherited from Exception.)
    Public methodGetType
    Gets the runtime type of the current instance.
    (Inherited from Exception.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Creates and returns a string representation of the current exception.
    (Inherited from Exception.)
    Top
    Events
    -   - NameDescription
    Protected eventSerializeObjectState
    Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.
    (Inherited from Exception.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Server.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Server.htm deleted file mode 100644 index 3e4d81290c6..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Server.htm +++ /dev/null @@ -1,28 +0,0 @@ -Server Class
    Server Class
    - gRPC server. A single server can server arbitrary number of services and can listen on more than one ports. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServer

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class Server

    The Server type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodServer
    - Create a new server. -
    Top
    Properties
    -   - NameDescription
    Public propertyPorts
    - Ports on which the server will listen once started. Register a port with this - server by adding its definition to this collection. -
    Public propertyServices
    - Services that will be exported by the server once started. Register a service with this - server by adding its definition to this collection. -
    Public propertyShutdownTask
    - To allow awaiting termination of the server. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodKillAsync
    - Requests server shutdown while cancelling all the in-progress calls. - The returned task finishes when shutdown procedure is complete. -
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodShutdownAsync
    - Requests server shutdown and when there are no more calls being serviced, - cleans up used resources. The returned task finishes when shutdown procedure - is complete. -
    Public methodStart
    - Starts the server. -
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm deleted file mode 100644 index cf0dc449760..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerCallContext.htm +++ /dev/null @@ -1,17 +0,0 @@ -ServerCallContext Class
    ServerCallContext Class
    - Context for a server-side call. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerCallContext

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ServerCallContext

    The ServerCallContext type exposes the following members.

    Properties
    -   - NameDescription
    Public propertyCancellationToken
    Cancellation token signals when call is cancelled.
    Public propertyDeadline
    Deadline for this RPC.
    Public propertyHost
    Name of host called in this RPC.
    Public propertyMethod
    Name of method called in this RPC.
    Public propertyPeer
    Address of the remote endpoint in URI format.
    Public propertyRequestHeaders
    Initial metadata sent by client.
    Public propertyResponseTrailers
    Trailers to send back to client after RPC finishes.
    Public propertyStatus
    Status to send back to client after RPC finishes.
    Public propertyWriteOptions
    - Allows setting write options for the following write. - For streaming response calls, this property is also exposed as on IServerStreamWriter for convenience. - Both properties are backed by the same underlying value. -
    Top
    Methods
    -   - NameDescription
    Public methodCreatePropagationToken
    - Creates a propagation token to be used to propagate call context to a child call. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Public methodWriteResponseHeadersAsync
    - Asynchronously sends response headers for the current call to the client. This method may only be invoked once for each call and needs to be invoked - before any response messages are written. Writing the first response message implicitly sends empty response headers if WriteResponseHeadersAsync haven't - been called yet. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm deleted file mode 100644 index d64be4366ac..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerCredentials.htm +++ /dev/null @@ -1,13 +0,0 @@ -ServerCredentials Class
    ServerCredentials Class
    - Server side credentials. -
    Inheritance Hierarchy

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public abstract class ServerCredentials

    The ServerCredentials type exposes the following members.

    Constructors
    -   - NameDescription
    Protected methodServerCredentials
    Initializes a new instance of the ServerCredentials class
    Top
    Properties
    -   - NameDescription
    Public propertyStatic memberInsecure
    - Returns instance of credential that provides no security and - will result in creating an unsecure server port with no encryption whatsoever. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm deleted file mode 100644 index 49b081e5506..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerPort.htm +++ /dev/null @@ -1,16 +0,0 @@ -ServerPort Class
    ServerPort Class
    - A port exposed by a server. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerPort

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ServerPort

    The ServerPort type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodServerPort
    - Creates a new port on which server should listen. -
    Top
    Properties
    -   - NameDescription
    Public propertyBoundPort
    Public propertyCredentials
    Public propertyHost
    Public propertyPort
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Fields
    -   - NameDescription
    Public fieldStatic memberPickUnused
    - Pass this value as port to have the server choose an unused listening port for you. - Ports added to a server will contain the bound port in their BoundPort property. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm deleted file mode 100644 index 2457a81a070..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition.htm +++ /dev/null @@ -1,9 +0,0 @@ -ServerServiceDefinition Class
    ServerServiceDefinition Class
    - Mapping of method names to server call handlers. - Normally, the ServerServiceDefinition objects will be created by the BindService factory method - that is part of the autogenerated code for a protocol buffers service definition. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerServiceDefinition

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ServerServiceDefinition

    The ServerServiceDefinition type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberCreateBuilder
    - Creates a new builder object for ServerServiceDefinition. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm deleted file mode 100644 index cabe4cc126a..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerServiceDefinition_Builder.htm +++ /dev/null @@ -1,19 +0,0 @@ -ServerServiceDefinition.Builder Class
    ServerServiceDefinitionBuilder Class
    - Builder class for ServerServiceDefinition. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerServiceDefinitionBuilder

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class Builder

    The ServerServiceDefinitionBuilder type exposes the following members.

    Constructors
    Methods
    -   - NameDescription
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ClientStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a client streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, DuplexStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a bidirectional streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, ServerStreamingServerMethodTRequest, TResponse)
    - Adds a definitions for a server streaming method. -
    Public methodAddMethodTRequest, TResponse(MethodTRequest, TResponse, UnaryServerMethodTRequest, TResponse)
    - Adds a definitions for a single request - single response method. -
    Public methodBuild
    - Creates an immutable ServerServiceDefinition from this builder. -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm deleted file mode 100644 index 5fab9b35708..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_ServerStreamingServerMethod_2.htm +++ /dev/null @@ -1,25 +0,0 @@ -ServerStreamingServerMethod(TRequest, TResponse) Delegate
    ServerStreamingServerMethodTRequest, TResponse Delegate
    - Server-side handler for server streaming call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public delegate Task ServerStreamingServerMethod<TRequest, TResponse>(
    -	TRequest request,
    -	IServerStreamWriter<TResponse> responseStream,
    -	ServerCallContext context
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    request
    Type: TRequest
    responseStream
    Type: Grpc.CoreIServerStreamWriterTResponse
    context
    Type: Grpc.CoreServerCallContext

    Type Parameters

    TRequest
    Request message type for this method.
    TResponse
    Response message type for this method.

    Return Value

    Type: Task
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm deleted file mode 100644 index ed9a564926f..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServerPortCollection.htm +++ /dev/null @@ -1,19 +0,0 @@ -Server.ServerPortCollection Class
    ServerServerPortCollection Class
    - Collection of server ports. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerServerPortCollection

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ServerPortCollection : IEnumerable<ServerPort>, 
    -	IEnumerable

    The ServerServerPortCollection type exposes the following members.

    Methods
    -   - NameDescription
    Public methodAdd(ServerPort)
    - Adds a new port on which server should listen. - Only call this before Start(). -

    Return Value

    Type: 
    The port on which server will be listening.
    Public methodAdd(String, Int32, ServerCredentials)
    - Adds a new port on which server should listen. -

    Return Value

    Type: 
    The port on which server will be listening.
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetEnumerator
    - Gets enumerator for this collection. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm deleted file mode 100644 index a7c5902c0df..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Server_ServiceDefinitionCollection.htm +++ /dev/null @@ -1,17 +0,0 @@ -Server.ServiceDefinitionCollection Class
    ServerServiceDefinitionCollection Class
    - Collection of service definitions. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreServerServiceDefinitionCollection

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class ServiceDefinitionCollection : IEnumerable<ServerServiceDefinition>, 
    -	IEnumerable

    The ServerServiceDefinitionCollection type exposes the following members.

    Methods
    -   - NameDescription
    Public methodAdd
    - Adds a service definition to the server. This is how you register - handlers for a service with the server. Only call this before Start(). -
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetEnumerator
    - Gets enumerator for this collection. -
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm b/doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm deleted file mode 100644 index 777f3eda442..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_SslCredentials.htm +++ /dev/null @@ -1,28 +0,0 @@ -SslCredentials Class
    SslCredentials Class
    - Client-side SSL credentials. -
    Inheritance Hierarchy

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public sealed class SslCredentials : Credentials

    The SslCredentials type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodSslCredentials
    - Creates client-side SSL credentials loaded from - disk file pointed to by the GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable. - If that fails, gets the roots certificates from a well known place on disk. -
    Public methodSslCredentials(String)
    - Creates client-side SSL credentials from - a string containing PEM encoded root certificates. -
    Public methodSslCredentials(String, KeyCertificatePair)
    - Creates client-side SSL credentials. -
    Top
    Properties
    -   - NameDescription
    Public propertyKeyCertificatePair
    - Client side key and certificate pair. - If null, client will not use key and certificate pair. -
    Public propertyRootCertificates
    - PEM encoding of the server root certificates. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm b/doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm deleted file mode 100644 index e8f3ad6f392..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_SslServerCredentials.htm +++ /dev/null @@ -1,25 +0,0 @@ -SslServerCredentials Class
    SslServerCredentials Class
    - Server-side SSL credentials. -
    Inheritance Hierarchy

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class SslServerCredentials : ServerCredentials

    The SslServerCredentials type exposes the following members.

    Constructors
    Properties
    -   - NameDescription
    Public propertyForceClientAuthentication
    - If true, the authenticity of client check will be enforced. -
    Public propertyKeyCertificatePairs
    - Key-certificate pairs. -
    Public propertyRootCertificates
    - PEM encoded client root certificates. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Status.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Status.htm deleted file mode 100644 index 11cfe46bcde..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Status.htm +++ /dev/null @@ -1,24 +0,0 @@ -Status Structure
    Status Structure
    - Represents RPC result, which consists of StatusCode and an optional detail string. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public struct Status

    The Status type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodStatus
    - Creates a new instance of Status. -
    Top
    Properties
    -   - NameDescription
    Public propertyDetail
    - Gets the detail. -
    Public propertyStatusCode
    - Gets the gRPC status code. OK indicates success, all other values indicate an error. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Indicates whether this instance and a specified object are equal.
    (Inherited from ValueType.)
    Public methodGetHashCode
    Returns the hash code for this instance.
    (Inherited from ValueType.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Public methodToString
    - Returns a String that represents the current Status. -
    (Overrides ValueTypeToString.)
    Top
    Fields
    -   - NameDescription
    Public fieldStatic memberDefaultCancelled
    - Default result of a cancelled RPC. StatusCode=Cancelled, empty details message. -
    Public fieldStatic memberDefaultSuccess
    - Default result of a successful RPC. StatusCode=OK, empty details message. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm b/doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm deleted file mode 100644 index 2b6a136f596..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_StatusCode.htm +++ /dev/null @@ -1,52 +0,0 @@ -StatusCode Enumeration
    StatusCode Enumeration
    - Result of a remote procedure call. - Based on grpc_status_code from grpc/status.h -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public enum StatusCode
    Members
    -   - Member nameValueDescription
    OK0Not an error; returned on success.
    Cancelled1The operation was cancelled (typically by the caller).
    Unknown2 - Unknown error. An example of where this error may be returned is - if a Status value received from another address space belongs to - an error-space that is not known in this address space. Also - errors raised by APIs that do not return enough error information - may be converted to this error. -
    InvalidArgument3 - Client specified an invalid argument. Note that this differs - from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments - that are problematic regardless of the state of the system - (e.g., a malformed file name). -
    DeadlineExceeded4 - Deadline expired before operation could complete. For operations - that change the state of the system, this error may be returned - even if the operation has completed successfully. For example, a - successful response from a server could have been delayed long - enough for the deadline to expire. -
    NotFound5Some requested entity (e.g., file or directory) was not found.
    AlreadyExists6Some entity that we attempted to create (e.g., file or directory) already exists.
    PermissionDenied7 - The caller does not have permission to execute the specified - operation. PERMISSION_DENIED must not be used for rejections - caused by exhausting some resource (use RESOURCE_EXHAUSTED - instead for those errors). PERMISSION_DENIED must not be - used if the caller can not be identified (use UNAUTHENTICATED - instead for those errors). -
    Unauthenticated16The request does not have valid authentication credentials for the operation.
    ResourceExhausted8 - Some resource has been exhausted, perhaps a per-user quota, or - perhaps the entire file system is out of space. -
    FailedPrecondition9 - Operation was rejected because the system is not in a state - required for the operation's execution. For example, directory - to be deleted may be non-empty, an rmdir operation is applied to - a non-directory, etc. -
    Aborted10 - The operation was aborted, typically due to a concurrency issue - like sequencer check failures, transaction aborts, etc. -
    OutOfRange11 - Operation was attempted past the valid range. E.g., seeking or - reading past end of file. -
    Unimplemented12Operation is not implemented or not supported/enabled in this service.
    Internal13 - Internal errors. Means some invariants expected by underlying - system has been broken. If you see one of these errors, - something is very broken. -
    Unavailable14 - The service is currently unavailable. This is a most likely a - transient condition and may be corrected by retrying with - a backoff. -
    DataLoss15Unrecoverable data loss or corruption.
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm b/doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm deleted file mode 100644 index 6d91a57eb54..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_UnaryServerMethod_2.htm +++ /dev/null @@ -1,21 +0,0 @@ -UnaryServerMethod(TRequest, TResponse) Delegate
    UnaryServerMethodTRequest, TResponse Delegate
    - Server-side handler for unary call. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public delegate Task<TResponse> UnaryServerMethod<TRequest, TResponse>(
    -	TRequest request,
    -	ServerCallContext context
    -)
    -where TRequest : class
    -where TResponse : class
    -

    Parameters

    request
    Type: TRequest
    context
    Type: Grpc.CoreServerCallContext

    Type Parameters

    TRequest
    Request message type for this method.
    TResponse
    Response message type for this method.

    Return Value

    Type: TaskTResponse
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm deleted file mode 100644 index 8d1102cc1f0..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_AsyncStreamExtensions.htm +++ /dev/null @@ -1,19 +0,0 @@ -AsyncStreamExtensions Class
    AsyncStreamExtensions Class
    - Extension methods that simplify work with gRPC streaming calls. -
    Inheritance Hierarchy
    SystemObject
      Grpc.Core.UtilsAsyncStreamExtensions

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class AsyncStreamExtensions

    The AsyncStreamExtensions type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberForEachAsyncT
    - Reads the entire stream and executes an async action for each element. -
    Public methodStatic memberToListAsyncT
    - Reads the entire stream and creates a list containing all the elements read. -
    Public methodStatic memberWriteAllAsyncT(IServerStreamWriterT, IEnumerableT)
    - Writes all elements from given enumerable to the stream. -
    Public methodStatic memberWriteAllAsyncT(IClientStreamWriterT, IEnumerableT, Boolean)
    - Writes all elements from given enumerable to the stream. - Completes the stream afterwards unless close = false. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm deleted file mode 100644 index 5d61a7bcda3..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_BenchmarkUtil.htm +++ /dev/null @@ -1,9 +0,0 @@ -BenchmarkUtil Class
    BenchmarkUtil Class
    - Utility methods to run microbenchmarks. -
    Inheritance Hierarchy
    SystemObject
      Grpc.Core.UtilsBenchmarkUtil

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class BenchmarkUtil

    The BenchmarkUtil type exposes the following members.

    Methods
    -   - NameDescription
    Public methodStatic memberRunBenchmark
    - Runs a simple benchmark preceded by warmup phase. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm deleted file mode 100644 index 31405f3859d..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_Utils_Preconditions.htm +++ /dev/null @@ -1,19 +0,0 @@ -Preconditions Class
    Preconditions Class
    - Utility methods to simplify checking preconditions in the code. -
    Inheritance Hierarchy
    SystemObject
      Grpc.Core.UtilsPreconditions

    Namespace: Grpc.Core.Utils
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class Preconditions
    Methods
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm b/doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm deleted file mode 100644 index a37e6d44b8e..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_VersionInfo.htm +++ /dev/null @@ -1,9 +0,0 @@ -VersionInfo Class
    VersionInfo Class
    - Provides info about current version of gRPC. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreVersionInfo

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public static class VersionInfo

    The VersionInfo type exposes the following members.

    Fields
    -   - NameDescription
    Public fieldStatic memberCurrentVersion
    - Current version of gRPC C# -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm b/doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm deleted file mode 100644 index d06cc339cf5..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_WriteFlags.htm +++ /dev/null @@ -1,15 +0,0 @@ -WriteFlags Enumeration
    WriteFlags Enumeration
    - Flags for write operations. -

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    [FlagsAttribute]
    -public enum WriteFlags
    Members
    -   - Member nameValueDescription
    BufferHint1 - Hint that the write may be buffered and need not go out on the wire immediately. - gRPC is free to buffer the message until the next non-buffered - write, or until write stream completion, but it need not buffer completely or at all. -
    NoCompress2 - Force compression to be disabled for a particular write. -
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm b/doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm deleted file mode 100644 index 82b734aaf95..00000000000 --- a/doc/ref/csharp/html/html/T_Grpc_Core_WriteOptions.htm +++ /dev/null @@ -1,17 +0,0 @@ -WriteOptions Class
    WriteOptions Class
    - Options for write operations. -
    Inheritance Hierarchy
    SystemObject
      Grpc.CoreWriteOptions

    Namespace: Grpc.Core
    Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
    Syntax
    public class WriteOptions

    The WriteOptions type exposes the following members.

    Constructors
    -   - NameDescription
    Public methodWriteOptions
    - Initializes a new instance of WriteOptions class. -
    Top
    Properties
    -   - NameDescription
    Public propertyFlags
    - Gets the write flags. -
    Top
    Methods
    -   - NameDescription
    Public methodEquals
    Determines whether the specified object is equal to the current object.
    (Inherited from Object.)
    Protected methodFinalize
    Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
    (Inherited from Object.)
    Public methodGetHashCode
    Serves as the default hash function.
    (Inherited from Object.)
    Public methodGetType
    Gets the Type of the current instance.
    (Inherited from Object.)
    Protected methodMemberwiseClone
    Creates a shallow copy of the current Object.
    (Inherited from Object.)
    Public methodToString
    Returns a string that represents the current object.
    (Inherited from Object.)
    Top
    Fields
    -   - NameDescription
    Public fieldStatic memberDefault
    - Default write options. -
    Top
    See Also
    \ No newline at end of file diff --git a/doc/ref/csharp/html/icons/AlertCaution.png b/doc/ref/csharp/html/icons/AlertCaution.png deleted file mode 100644 index 78f246f047efee82e1ee0b64f1adbef606253054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-;7LS5RCwBylfP~gK^Vk;-}-FFIChME=h(5G2(T6; zpah97qN1X89i>STp`=JblN3Bb-XLY%Q1AcdkQrp!HXSPCG~edkf_v zbNLd`4I;g&my7af(tY z!^x4-&e|Q|sk}S%YrxB;<)U85f{Q}17Mvr0|04k1_t(Mm5D^gJ?7QL1(b)&!p$F_H zQ=ZPJBkW)V#(=Z@IwE#7fKVZ7{EzbK1jh-bjj_8Pu)0*s;YK}N6oDJ3Bf{6$rO6{A zf)fBiL|Ck3`TVK7>H(*(-W>D)7;>$iJe67F{IB>i05~0`Lczgc$^ZZW07*qoM6N<$ Ef-W!&ivR!s diff --git a/doc/ref/csharp/html/icons/AlertNote.png b/doc/ref/csharp/html/icons/AlertNote.png deleted file mode 100644 index 0ab92b66aa6ba6ba29e37046059c5314b4971341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 zcmV;V3|sSwP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005cNkl7i60=bh^UBQ70kLDH=DWlycTmaJ1bb_!ezLJJI{IFcg~n34zem7a7_U` zeKapQxPwc0G~9(N)tvD;is*(MuHV?ODS#Nnm8%c`(?g*2v~hLm_O-Esy#Nr$7ZCz1 zFOcU{0s$dv3<#N!k3a%by1Ne&mR_@TMk3oQWsn7shB-hKAlJVTB{fbqsQ`$7k~q%+ z``wDpK4B-z$_g^!zBB1xUO-e>OEV)8LkY0eo58a!tTLS-juenp3pJpL3_>go(s1yL z=g(G%!_P4KiuYDoUt1<-+sFqH`^fva4^SK+9}q$*gL=KjyZ0M>`?5*1ZXB+Q?S7Tn zqn~KCPo=Jays$9w86~l}xWKE`HRjvrnXbWT_ct$JbUA*cMt!!4nWqSHJF#pb3()Bt z zF>4e-6o9|k-P;^zp(G}o+k;ec1O#g<5k!p<3mXf2!IaktVku~48GAv{RuEBy5X2vl z#t`C}C57MRV)tMtBW^pOj9bC84h9&!WM3@%+kg+#{JoaBE&hFgzeSF?RlT} z9&C3kv^j^PLoUr+;3}V4+Moga8-Q)sZ8czJWypgkuQIzg&*$XwMPRdBFScOivh=v; z!-HXNd-tayjs;t{iuDD+DIy0DF(86SZnh{T7y*>~2S5S5exw8-D&5Hr&L;1&b=SH} z$=1Y&L%h;Q0Pa6Ke#HT}J~t0Q?m tQ)sP!{{^91t5K;`{%`Qbw-vBLDh*rjvI{K}%vsHm@h_?tw;Z7`jJPwSdcxnw$~gG!RFk%*O*|I1~?_r=Vw zW31k*ZJTPZXD-TrHg274%78fS{q4kPEz6ow%IwOa&Zb~yd6;xJgr$h)xL?S8H^*){ zp<^_vpM8wGik;1zgtUU`!F9`^RlDZ8o2#KvOh%~ItUx<8m&TTvYdD#5KgoSI$$&Y` zo>9tvHrAF=$caVbrC^oCleOlxnP@f1x`BYNevGeAzwg4P)T&`vMTm%qrD-ymZaeFe zLb8BL$&X25Vq(gVN10|b$9Xr%dpF$l+yDRn000000000000000A^8LW004UcEC2ui z01yBW000N6fO~>_1}SLPB)mW!_w<;6q)BF&{is;nBp+15yFz aYzYIwMwU7PNbLy_pn!w|0x}K?1OPh{BoK)J diff --git a/doc/ref/csharp/html/icons/CodeExample.png b/doc/ref/csharp/html/icons/CodeExample.png deleted file mode 100644 index a3b9fba4cc5f29460d711dddb32b79b85783af9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!AMUR#}EtuMf8pRk0XW?`S;ryG~}Z?XkE$(i7NV%yAs7l(t? nuW2~*F(>VD=(TZ|HfE5{S-0gp>+@4UOBg&|{an^LB{Ts5mnuH4 diff --git a/doc/ref/csharp/html/icons/Search.png b/doc/ref/csharp/html/icons/Search.png deleted file mode 100644 index 42165b6d64c2ad706179b7eaa0485caa089e6ed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^!ayvawSc zV~Bl)>eG>!R=iK_%P!ZR!uvNw-nA5}SoCV%;XLf~kk5Lzl-FVdQ&MBb@0IsfxDF6Tf diff --git a/doc/ref/csharp/html/icons/SectionCollapsed.png b/doc/ref/csharp/html/icons/SectionCollapsed.png deleted file mode 100644 index 8ded1ebc6b03328520aac9416ea15f07e63809a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9mFVf> z7-HeScG5-81_K@!>nOKVY?6k`bMLh$RNeCW@W8S5!vYcZ1~H{GJn!n{R?im{6g+Vz zSEosFd$((h;`T1rJI?QP_2g6db}rxH@?`sl(yP}VuTfHJdZ?$QbZh?|a|1rj<3Z`n T`6XRI%NRUe{an^LB{Ts5&hJQu diff --git a/doc/ref/csharp/html/icons/SectionExpanded.png b/doc/ref/csharp/html/icons/SectionExpanded.png deleted file mode 100644 index b693921cc92c2b00c06b842c8d098ea63afc1cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G}c0*}aI z1_mK8X6#Yg$qp2hDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc|_p9747Nb z7-Hc+xBDRP0RtW;<0khn|GalRO}y^q>HN!rlhIu1k@%L71xuN9)9?JPQ?iR~71fmO zjGc5ea*~T$?$N0%zt%JTnB?&Pl+X$N6$xqUli92599x4kcB&s^{ZR0-?|xgoAkZ2H MPgg&ebxsLQ08eg56951J diff --git a/doc/ref/csharp/html/icons/TocClose.gif b/doc/ref/csharp/html/icons/TocClose.gif deleted file mode 100644 index e6d7b5edcc237dc7d59b4a42910a4abab459c94e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 893 zcmZ?wbhEHba}ave*XOV_wV2T|Nk?Lg3%Bd;vt{|az7|9FmPxysB_48 t1Sl}Dva;%BI4C4Ca`Fg?$QUR#H8gQ3@l*tSXkcXLWOnfIFj8Q!1_0$!Io|*P diff --git a/doc/ref/csharp/html/icons/TocExpanded.gif b/doc/ref/csharp/html/icons/TocExpanded.gif deleted file mode 100644 index f774d9bb6589737768a8bf788046a8bbe53ca902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837 zcmZ?wbhEHb7O#s`Kb79LTx z0D+J54|j4a#f5BWU_8vgZ&{@x;lOZgBD1%Uz|TO2Mkd+leI^Z`=6lUB4c(-YS(JWi df}!fKEgT`qC%VM7g+j9?zO-NdpNWaV8UQoLL&5+6 diff --git a/doc/ref/csharp/html/icons/favicon.ico b/doc/ref/csharp/html/icons/favicon.ico deleted file mode 100644 index 2b9963f814281f0b1b7bb661be8d579191b59a42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25094 zcmeHv2Yi&(w(s}71ThMTM?F}sl6wFFkxoF80ESQ$K{#STn2>}NIs_sC1R?Yy0#Xy? zSg;`=DoueTg!DF(-jhj%^h_qnlq8c`@4vp8NkNLnKS9urvC!KJi>yKKA_xOeCeQ>o0Lyc~L_|_H zwUD4|&Uh|efr+kH|kLC&)dp!jDZiApav{X>+1kR}q zLNIj5fILzAeFX|RDO}!FK@DMU~LXOXU1qI4e?1v0n@$MM-U)d)pKSx=|HV7Ht?Gtp-C?oN*pbUYH zp}#6I81)7_LJvB%RG{-41UkcX+XV&iRj`W=cA+Yzkb(N43&;=IC(yO+sJAGAqK}}? z;R7wGchnJOvJNM4{TBJSS268n)E{tLaNmL}!8b@HC=0+7KA}id2*Dwc1HPkz@079c znEmX2zW7((|7#ZL(ViYGI&jCdCp_JkgpvPdyL-2_we{}Zwtuq)<$Wl+cOT=oJ0Jka zrW6pc+ZH7EqUiqA6E=(-*p{rV0|F$9y9w2O6JrMko;Y&s=#ef`0-<$)ji2q9yJ*q9 zD~g}t&)Z9h_4NcDSy?k47apZ(8QUzC~BivyNC+m|Tz zM*m{b-gk+F?J)nX<0q`FY-Tb6C}#Czg54bnx&z(1?<@(y-roM*qg4Z3Zz3J3^r%mV<{;;R`yqlSTUphFv2mG!q zP`BQqmDNalmvQ4P?CsrPPqFJl3qA8Uz_(%i$B|_5j*e~o?d_Kymk3xS7sxu!e&KG&A?dpdoMyVd^pa~weEX%x zU{i6_IN*Hk3xVtVsb|gTYCz;WH z(38+`_e{ru&~3pmW@`4&-hBVMr{@$8cdz4tU}|#BWsjgD`*{tV;O_4J@+&~GF*is_ zpzYq?QztvS_c_5C&kS~%xU4TIt)F|@-3h8a!z@kWz=OC3#O3SO4e@lIah%OA`i=gG zuU02UyzJrZJn1!--pb4#1dJkXS^wc1-jg>T16xb#^5k0QDU+v6VQIt{ByCw^smjE| z+qP|3|HkX@9b*+ZS#|06PtU1Sr+TjDCyVqF0lyFr@7S?p>y{6n>2*{}M~nUoIh-@k9)UKF!! z!-j2Jk+$tMW%TZZjuLj7-irr6{qz76eT<^^?%i|9^xEbQbP#kk6Nus=&@j<~gO*o! za%Zu+z0kps7DUtaiQjRT2rNo;Mus8piq1u}Y0*w{Z){T;^SJ6Q$!1Jl zX@k_&Z_@*@O{|zkN_XRom=sBEO%&Qyx*7$$Nplv#OS03-a>;L5Qocj6SZDQE{KQ`GuVwyuf;@9s^jPBi^ z-;KG*kt3LJSmR^c8Kb+cEha+!#=bpm`m`lJ&vn71!OyNej_7WS+3BM`6J@d&XW^f0 zmcMmiM}(fp?#DB_0eu1=nStwzK3%}U!ob%yAmBNk!6DkU64zjsA(Jfu!t-VXU#oz} z$4k?gLB~bW2O%ObW(Qh7V#@dJ8el!kJcXJyinAqzX9LU(e66hJ$nKm3&3BmiXn@4P z*Uu_omVe-E0)lAm-vi>i+N6f z{9%k|?_%#Tv9F|}FV7e;$&g;Z)kW+*L&|rtAK%Z4C$q>Oj@a0gKi)3Dgn*gBxQ|40 z{xHY35PUwSOw7S$oXfb!E&0#5PH^on@y86uUlcdF+4pyJ8RTcmw-Lv2u0?|DoECObO~_74!}K=+A# zQ3sCh?i2nlT73k1!PiQ(d1I=lQ=i=+9PBk$6a!~YaGC&e(_G!xPZVESw{GeTj(BYl zGY9l?c6NSkr$_p%X3$}lctf$1e_tdtFSo(X!1 zj|_I;CBX5%PngDb*+_97zyA+YP%!?eXj+q%Ee-&qUg8}4anfkrCqNp@UF-)xVt#KL zWCuLULo`^L->-Ik$+U<%-e2rG*uK9D7PXkq3r-VUO~d}gN5m2Kj{TR3(tGir&I1QO z`_WKH`Mfx%|AhXdSmRy+;&#u;FCP=1@UkCnC608RfYl{`Rt)3w5YOR(;;zl2_~>gM z&SON8S2B8GJl?b6jc1NvHNWpLJc=_Rdj^up-)$-W&so_Xe-4eOV87-%_T*CAK3tt*ueR4HqgQVpYC+cVEfe)JCo=~@Fp4DTh0Q{p&|4@J9uq<_ zlri{YIAh?^=Rsh>Wjf};yqG8R=5eeiz*ge&*S_#y`@(|s?ED_;_nyzwU930F}|8(y-JHjD7Q zyKfKwd6>FkTzgLJZ$Az*N`LY7{!47VWXr_0ve&qS_uuS1DL{Ny3>fIz`(c#tFMjgj zu)cv0zd3n~=+7!(#&-aV@q0wmBVOPQ#?oF=E@KG2{E?(PLEl>t3NecaMVIT3E|=k6 zNy-OaDDVq$wnsm~bpFN`1g`=_Y36{N|L;;-=;g}vxVpULjvrNSQei@9$hlMhjyb9_ z6Y2{y8p}%>RW*%`4GoQrb@dHu=~J&(H`Y`%+{&-bO_E}{ir>3qRA60#QL%q7Oq6F&v@ggcS;x$#b8a0|ab$yMxzBE5K z{-;wRAFsZ#abDQEx1v6JKjFZt^s~nb6cH5_6(|L0+Q!EEqO3nsgeoUdt5&fo8a0(= zx6{ua4PEv6^?5Ia%E)%7Am8ISdlt)qgLB^TY3K? zAh}Lm!;&{@Ze=CM_`3wp9dKjbOW|%q!@OUKJoB&WT9u}zB4xKnn9HEh`GbSs?;q?o zBKfO5l@;YGwOXUqH56yxtBAa)YufT6txi|3(-+HchA(#xnL8kS!SE=L5pfHK1g(AN zW<;c3--Jbg%D8LM9>efHV!?<|*C9c32gnbus;;b1*Vlu*EEvphFF zVuf?4?4?ML5iy=4RU?tcK-s4cpu{+@kuhE)qdkU)xep7P^I}rK z##$A8p;22~nHLj$M-jJ@B6PJCT78pRU8mUX9V#0bEk^z-g8*&4v&hM zU-M5Nh+i~1!E<wYCwPyLFL*i5ZBU%+OYt5<6TC-CpHcDNqo7E%=Ll3sl;4c1+a(Pe zjkcz|AU?FMh`Nl}##?z!%`J_MjY)gF!sic)^R|;O8ZBQW@dqof5pfIc;*V~u2t8LB zdM0(_toQ{(%tc5F#(9l`F>lBQ8ca(pm z+-rE$qOsS%2~=zKrXsRFMiGO!h=rqotXMn-E)fI%nerxsQCD><`tsQ}{zhXfs7k-z zld^1V`l<=3D;yF#^9LWf=g`PSVv4He>+I@IQ- zz|^|xcK)!xv4u&huYQrWdVG%Gq>NSLVImN=8QF9r_Z$+r*giSYuu|w9PVOE;bybE6*H}lU<&{yAP z>}Fl{ryk{7XO?W5p0#>H;>rn$2Uq2M_et5+uhTw)&kr^g5$7?iNFK)QVbY(ECM_J9 zv3h*g2TmzV$J{!*pWhmd@EH?x{IAQ1ZY<8`_poa0dG)ThYWKcZvhlSPzt>{JLeyIB z)2hPG!{^a*SQJfhlX>NZ$NzY4lZ7L#U~# z&O5NAz|W~<^Nhl^ld8_{We!BzilWG0zH5^oH|5EZ+VVnEE|sLv*DL7jRn14;3-`Lp zqr%a&O<4wwx<#)w-D_J~OX5OqZ+okH=j^I&Gpi4Kw`yvUWi%M>I$TOBuqikdh0|q! zy0nE(t+@Twrc6bAExN6y7F|oLuEl`n1EW=BC96;R>JQCtKJ2DF;%+QXF_G#jisP=B zJ-?$0%BZUiMVTfX{$G_wNhc}(I9=bRySS&~#+m%6kj&^%d+K0Yb zN#{3FxtY+Q(^O~4JF@L~UzrxuZY309s3BDpRa~O{?W7Ha_>csZ5J)D9nJSZM2pf^db15?c&4zNn6s_mfy8b?^Q~E#BX(ZN$6t@ z`o=aUzrQgWTF{rGt1nKtc`sJ?d0(C!p~_8cC`^YxH`mvq)qo*B2A#I4wnB3&A2OGv zM&F0S1GCf_F%5YNb&ec;6zZ=1ldDi?#;G%7AIJd+ZHkBDI0R0X@SX$q9te97n+vfI z5o+Gs@W=iH&@sbkgM007wBayKs0n%(f*12--fjCD{*T?Uukke4|6fQ;T;BWni{rTo z5oI}PWx464nThi27Z3Qaw;ws=4@$GrLspO+YidpCd>WfuwFc6*7@H07RU=&V!q=bK z4d%tK`y}9?lSYT8(&!6vvf?j(pYYw`w6n)@uAV7MiLb1#uGclAzEq|8Zg0PNFFtv( zp}=WqGL#o9lfT>@vV2m|+?Q@Hb&B5bcJRDGAq(tcwz=nqUPSQU)M_+p>Y)4YSxJ&m zgTAFWF*4Hc&5$|$!siXRvD`U1>Sj}ObN=_AgyHf17lUPk6(=@TR#fO)je1q(#Id6~ zvRdQqil(YH7)ui)!xlT-oHqcWAO^A^zu9RyJkFNIUW;8YG{$2%V)&r<`pQ4`t*Na= zZ=M|&*2X6<=$tA)wb@8DWu?(;XNJiJ#&YmEO71-(+S@Me`-2F`6F0tvu^0g@f{;k} zVZn1=%s6wTK@VHC`Yl>uVx>z9Z`IW6jg)idFoXvaxhaB`B22|nha{g@<>r`;V`H!i zcO4wIbbNVUCaN$q`i6;5V`i+O)!3k_j$b!3+I@&QQkBB^s3nfsVON@}O7f1aj-4;X zcv66hP(1Yg{#j>_qV(q4vhjAqz)Dw=1x>3`V`97!p4lPDk#kIrKxkORB8QA5IqY-$ zVqna?z6gN%J+rclnE#Suw^yS^i;>L7Lk2!ARV8f6n?J>Q4M&&+KBhPUVP~wz(6FzM z=nQ12ugTi$5i5nA9B?ik9fK(S!&wa~9uqhCEMY!U5K?*LOya^(sVf{4m$dO=k-`@{ zCS3g)VHUc?tUU`5`^guLLdX>FHA1m|W}}KD&y7Ay!Kb;h829SFIGFQKvylgDX z0~L7EF;c!@Fj!?phXALkraWcsv;@y#$xFv_|OZ z>!+k6f#8e(R(k$0IH#_3OjMV<|cN#g0lzn zR*x%K>s-9g-9(jm<5w_2QpNwKE6xHHx&?|nMPDq|9h{f(`PTB9I)10u=*kM<7)VvO zOG^)WS8bhMxqVhscC_@)uyEcxCO*tce%;WZ;`c^9CI3KIx3+x$LCK|)w+oaNRkam0 z>Z%%5ZBcIh`F+iYU0RO08xmL}r1XgEZA?rz+MEPq3->K7RdoU>&yf6RQ`m9UjW4Q# zKC24~G+f$2Kdqzd`=}&ILL+r~@f}P|k4L_XLvpCTBn#XuYPPd9>NQa2^49?m zWMXEO7T%a1uFX%>6{WRQ6}MEEHkT>2c?wN>Bq{G1o}oM^qd-o2VS*F(L!7WL;)MMX zCw~Br3YbB}^;UWs90QyHd=B`+44>h89B>e@6R;kz2=Erb9?%c)B;bES50iwWMvRCyg1j^(xY0Jkeo1(v{{A<5#CfwFG^AybOHK0a%xR0X_z> zpK*P%>;E0Vb^X5p{}nx$hH1Gzp9Q?~h|R-pDZia5l4QP>M>>|Zv4OBuMGXxNR9|0D zSP_z-uCA`_p5JjE<7t4eQ$wfQN=cX0tLM}`yLbBq{J#gV&us&^1Gp}p2Rs5`zx}g1 zuc!hHh?IKw%r_Q20mhQ`BY|#qC~1$)E3_?5jUeacTmUm))k0daxbX z_q19q>Ct}bvlCipPkl8K<(~!|0k94e0nY)rJ+OTDN}R|2%#+`Iym<}kwY90SUgFJV zbhLR{aRFst|B)hgEv6tZdkS(LM#1xkn!t4^g_yzeF35E_g)DTSxQ~}n_O&x~yHF|V z&vszH;yPuY)T6w{+(hI1(Oq1c_C6vXnH<-FlGj6wl7y~k4A{#BIvw$e~AHWsB;~meN@75M9e)B?oR)VgnQ4OEbNj}qN_sR-N z`*uHtE^?G)vB(_eKAf;QL19bAQ^fZHl$n_+(Q+SJ@XKcu;W2{3fpgQ{q@zWTV9zmF zcG^N^h53>{cG3a$z`pcQ7wexO?^ghSz)XNG;BJ1zWB20~iJ=8ewdJJO>m^&TO}Ku` z3vx()zz1>N|ki5_>!qTR8c|XZ(7K877z&Fw!mZc6M#EojfXRSJ$(SdxUspp zN%9*@KU1#ErnqhMO>(1LE+5-HlH6EFC+wRLHa6(OzV&qN+BHdEgTX+pt*sI$PalwQ zu{>Di_S`&@^*h($eMl|ky?ENy}7595yUQ5&0|A@4~5kI`HQ9D{KkNU1dP%K4`9 z0^&MvYqOY-W_-JkLQ#ffbJz`AS;XaIJ}$|O`5##zYK1dhJ#}0vpY5;0xRw3$Ny0=K zI3p#Hbih5=8T%a9MY|5eur#`vs;ercI^=$X>!7Ln7RCMYO$`L)I@kr^7=zIRv2X0f7WH?R#d`f{DI&v89=)FIS!G%0WV+_?@g_HfMd?BAcf2w{%_yaC)7bpr_M#E@p!K`a5-q+wMkHrNxpTTIvA5 zA3>K+etHYyehF9y;Q0o(V?mQ0UuI~mlYGb0XWohnq6p7Xush2>s)Ouygq0qX4tL59 zed3pmqa@$Sl=Q)5N?tRSu&fLZ=KZI9AUC%GPr$(X zl(27_5fgKHY=8EjvgqFkd&BLrFCIhK(j;u--rIK|f8@$Zbp5B(QoLc5Hc^Qh^OFht ziucrk>(bMtUpL*gzEsV=3M z4t8zPVNA`6H$d($0c!vwb@@q6mh~;RR}17%-@SkmmW(CEGJ8q_Uc{A^*```Llfcx z#HEm%?eA-rzu6+cR0oKevDHqA%N;0rg(Kkr0Aa_Pu!W8`!2W-K`B{f+o80Ky#a|@f zwfGV9u9XK-vfpc+b+E_}-rUCIfH>&D{YK)Jxztd@b0?kT7p+*5L?1+uo9Fu+%MC-{ z*-3tCZK0fxJt<}7cuMn`02ohLzeXLvhyI}atiyGG4+;wjYHQ1u{-{Y%yHDyvAvedOivfe-KibwN^ENdb38~=73QAw? zM47%50ZxR)Zq$Lj)CT^D{UyJK4#8X8Ngf*`*^leN(jKZKFOVFvGM-8P(UR;*uo3&K z9KIV59a49?Vb0xXvORp;h%pNO(+ar{16%?9u~J-STGBSj&i^ZZ*hATVlPPB{z;6;| zL5H-JjwT=Cc7}5QD1_`-O!-;qQr~8gAA=1kKU?1>Ki4ZZ4J1EJhOZ_rbCB9!)*&B> zj&0AW6)U^EJ_fmYKK3@iR+AZ%WKdU0`Idj0$R8>H!`Dc;;dN5tiW44`v1$UPz&3xz zhge7MlR}Sd{#{$BOO1q__LA>#-@x^Y4GRF`5BRGBIuxBfAoal(xeN`pR2X@+0dj8v zOaVOIkaF`g(;kZj3)e~|6>t3~;UooMIu$~XoHfp-I*|IIKUW7azOPYHMzYjDTk3%4 zcIsC69;v;ht$LL*H@{6rX@kcs5$LdEKzsa_ z-h|w4fPsKVRk4@5>7_o%a$LlWpYj{k?43ikfa=}v(CsZVNx6P1Wx_sjyS+&+my=Sd zl*UG;;5kOJ-|Kg67x62ds0h2smN89=Q?T}!eP9XtHV4AKnpD5JXm8o!0SN|0R(M!oD@TJBEW<0Pn3VT}TBz%C@o&Q%JGt zT?)H)MOsVaxJpVm)P?=YyUL$@bSD92i1QvkIJ{r zlG^souMSD;3>JUpats*XZ~c6Xunj52tN0B*N;~RD)rGl|?=TMQz;oM@gqxJJ9{mIC zQT)*xQd=wDG@S}IPNUijhZ(g!vG0^-)8Wk@T!q}c{>|&UJa=rHzw4Dr4ctHdE?ves zsIOKMeYt|@vqhvueN^q7O)2{pQ|OHlDOT=GW5hanF4d+)P)&9s)~D+wf4AVU@9=tQ z(T|6yXyfaWUs~GPZS)!ChrHp8ys_Dya1@Oia^)QN@Vs$2pw0HUmr`xQHIJrSxxcRi z-k!suB|7&Z(V2C`$Cz3Jyhy$8eM4^4bFRFE{p|Otg6OxML{|Zq zw?Ur`M5la6dtxc2|MEF06bfnGhTG@865GA3tc)shQmFQ;52^8h3+a!zOMa<4>`n~_ z=MyQ+8?qgkw8AG<=`lLU$m7+E0G_kobsf4Y=JF_gVOlHB*LC1vxy8n56#O#!C{e_x zL_zSYUp5nczmCc;22fU9gtT^^o}Nyrsi_k1T6#uC2Ib`BP*H)BYT~a^)AykHY%$Rn z%i)*sNxt%P(nU)_?N{^(`l58>p^sJ{hs;9(j|1*pcf+gp)R-D}u(_h>E`DTYn|ltY zFTTa5^(olvBvIrcqHDWRFMCNJ^tm(^ltf&nLWb~5R2p%SYD3RZ>!tlfr`HgjU61

    Kc9++bfW=J0=U2Yo!{VHr=-h{leg4$jww2@Mf*y{5sk|@ z&~XX=`ZH1P4}=A0qPPH}u!E+$VPE@o2mB6jZI|g?$UdSQpAdz7Y|=UYYp}h$&vC3! zF27L;!Fb)g7vK-cZc#*+rzkL=Cg>!3=Z8!T5|KE-iUX+X5FAnXjp!D9xZp?Vbebp& z^^^e_xvo;bB1-;(Nd6g78uT@mb!OG!iG98yJAr-P&MbSUzS1J&gRc7g#G)2e1BRO9bAb-pD-O-GiS&U5&N>1kKx1otz-wANHAh z>7vbvi*7D2H2(ga!aW4|FTUnJqq(ZYSebaU0J8K2a39|V@IZeD&V3Ww^jE+wON!gAWP0=nImH^~D*j+`qMI>!o=qD&`IW z?|6irS!ZsW&4^WT9;+4W`ju&yzvXz0$0U}U$EE)fxxu$ns!O%~_d&$$n1DpMNy#E-r(wGMP=5i?Hd#PI*(gIa!VGUjpXwK=g@ zrMf9hsh0HOYe8}e`halcZ>(1Y&A@zv_ul^75+Cf9ejhCq6^GwHBY&{wE0-|A{5x{J z+poNM$G^)4G7y@7j}5;ESIEz}hVoT3Uxf!>{TUy4{(Qkzy8Iu!`b!12mmkW{7Wr{4 zP=V|z(<+uXs9p=P^U>?|F2Mn3s>wfx>(PmtOI{=_*gj-$o{ zcpc_vz{L*mBks2Wcz?$RaA$f(Hv7$uMe>Mx{t7}P&fYYZI0smEE3WeZ#spgRKK zn49|stEAwIKWK0sv=LoP;t7BHb^23u)zgu(e>y>-bNbNLcl%QMPhXG@`TQl7*>6mV z0UfW^{NsxQJ4e(*K0WfHKbk|=CwHT$H=m%eZ;nbGRrVq5)lYkjew+L#DZrcY@P$mS z4n9NRjqj)w@xE@>>4OyfT6dB!7(#NlffT>gp0f5YqPY13DPh52igg)CSEu%*!q{NK zSJUX|F8>_R|Er-8WkcsktZT=~UL?grtnJL}Lvec+6OL#~Yg=)1`w+fBMB%faqv&grlpJF!w(xY$sx8r1Bp>r3lE+GQ_(MAbjzS z@O@6!fnDpD`l4)V$ciKRynj$4(|Zmj9C@XPcY5Qe))8wV6`uT%qGvw~y#`Sf^wFqm zsIDNL>3>v1{+62Cl)GdEr7pt$>HGl{JLf+s_U&ir<{LdRZHkh3Bw@`|KG#;-GcaI2 zqf(|a{Smb?P0H5`d595WA zvZI33pntnAC-Ek}42rd>T%x_0H}8@Wq5+IOtyFgPE8+;Op~*;vs~zdKj~yOrsj;k( zwyark1@yfEf<*?ZP!L`4q3WM@QFUtb58!kIVT*mdLS^KKk!3ASNGUCr~eI_expJF diff --git a/doc/ref/csharp/html/icons/privclass.gif b/doc/ref/csharp/html/icons/privclass.gif deleted file mode 100644 index 0939694ce08ad44508f6f017b68e46f0f22377b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmZ?wbhEHb6krfwc;?UW|NsB|hUt&r{rL9oM)d3(_aDFd`{wV%RU+Tt-(Iu*bdPSY zqjyAO5)Xs%%*W4OT}r)t^1|KQ1$X{_`1|40mlNl1p1OGN*VKPj>%-QMrvoZ0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB<oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i_+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3iz+epk2~OYT diff --git a/doc/ref/csharp/html/icons/privdelegate.gif b/doc/ref/csharp/html/icons/privdelegate.gif deleted file mode 100644 index d3aa8a65ef5277c6682f106de956da036c50d363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>10-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAiIO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGw&#H^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK}Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#izx;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc?*VhX^eEL$_I;S?t z;q-yc?{Bw0JskD*+0M2c_oqi=CRPT;=C|KGzkX&z#JAUn!n2y*T&c`&nEqh9%hwnC zj-0t!6=(DDL0?K)@6G+0dyidvbv}Rpw$;g{y)%~Yxxd46$H7ahx1WA_Dm}e?LT>%E z=ORU|^GzS5cL1XHZiY5LXoA)t{s+AtlYi9Tz=Gm|uiP)WbllqpPP+ z)n1a1MVG-Qb@J5dGyP4i^w=yDcg>x@Fn~iQhRG>ed)KlRqDdT#Ok55L&0)4WTUh+8 zU7DCIG@4uk%^kgCje~tTIqkw(n`EO*4C6yN8JXA^6cbM@GzwzkiQs5z?rCOXl94EQ h;J~8BE~;=s>7Yl8atNQ8$3hiOG3k^KQ#n}}tN|oJ0crpM diff --git a/doc/ref/csharp/html/icons/privevent.gif b/doc/ref/csharp/html/icons/privevent.gif deleted file mode 100644 index 30db46df766c1b49bf86b168eaae03052ce8f292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW&#T9hkzICOvb-pxf=`s=6a*ZoWIz zncpzIeag~^VDI;PCrob+ez~A=_t7iqfi@{+eH(Y3%?r|f{`lU39rK<(ymj|z)7mD5 zrw^`IbuB!xslq?GCb_hC@3CvEx1X-eaXWu-;f{ls(#t3KCsj|)mk0WVVIY9wPZmZ7 zh6n~7kmaB_VPId_5Yg1!(%ROnB&Vz4>1!6;9>K)JX=TD-E7GpT#LsNOAR{z!GP4+i z=;C(8xe^TKMzh+PI5{=#92lIWnz-2oTv$x)gOr&WT)msw8CiG(d?KWetLrp#Tk1El zSi2t&_h{jAlx1VncGhE1P;F&n{J)Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 diff --git a/doc/ref/csharp/html/icons/privextension.gif b/doc/ref/csharp/html/icons/privextension.gif deleted file mode 100644 index 51dd267f0f7fa11a657ef51a69cb9159ced8775f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc< z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOue|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+G+UdKH=Bu-=(c{a_gsQ z1uU2rG~KoM((a>IdQJQC8>WYKecrh1?6QF6Z*RPfE9eZ(Xq;m+*QfS@Z~c=GS3ax^ zTJ>w@@5E{UcO1MFKjq)+iEn)CAJ^&CP4Jue`SIu17hjhcRQy`^J9g6Fcl+M0-hSFY zsoJCbCeRHGWC6vWEQ|~cxePiW-Jm#OVBg!2+mtK9sNLMr*(%AH(%Bisn3JRM%%x*_Q%!)u8UTgK6xaX& diff --git a/doc/ref/csharp/html/icons/privfield.gif b/doc/ref/csharp/html/icons/privfield.gif deleted file mode 100644 index cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2ck;sB zs9D$d9ly5Yz@<&Q&uu;O@WZDsC9Cc&SbgZy^+%N(9`8MN?Z}y%6XtD6FP{*e)in3~ zzufw1b5DMnaOB&iXFs-|e^#^Q<&J}w)?fS6ec;Rd3;%W>y&~tgvS#!1OV55@eerwW z>8D3;f7FcHFk|_i)!R>>ef+a_)6>Nl|83lLHm;y^;^B`~T?=Do-)Ne+#58$p#rnq@ z;p=xFzH;Qut;^4U{r>&u-rHZLt#eY!di|5Cv#KYq*?aHM%@6qv)B6s6UU=bOMceF@ zvc9J6ue$cWTYU13e{xOrrl-$8{{H{}Kf|B_ia%Kx85jZ?bU-cw#R&uZ?1sRm=9bpB zHaUZU_EvpM9})YWCR<-wR(BDN9!-B`R#p!gogQ@)DOMGBHHIERZ+1g=D~7d!0-U@? z%mRW;3Q87Rw{bEu3yGSVF)U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R-W7qZ^xtdtqH)rL+s;-4+F5gKh>zlEBk85Oca%u1E75ir{-(B0g{Nd9# zy|Xv%K71v)w13l{a|_oV*|_WMw*9Ab>!+2r&Z+KNvj6DiBWG>_y~!{@K=CIFBLhP? zgAT}kP@FKZFKY;IYHn$5Yvu6MkYR3b=1}JKwsGk75|9;ZQRHQ1XO;2{7vK;Tv@llE zQ8i=dV%PEww-YrK_mH=CRq&t38YmJjCMfRI!tAads%9?~&cq`ez{u3h9AYkVE}Vyf zQNq@-@4U1N7Z;=E)pj;hOKxsmXSP0WhVKk~l5TxI3@i+?J`E2w7#dhugj6aV4hyoe bg&D1>Sm4~I%pAO=LgC{f*1gV+3=Gx);f>!6 diff --git a/doc/ref/csharp/html/icons/privmethod.gif b/doc/ref/csharp/html/icons/privmethod.gif deleted file mode 100644 index 71f882264291eb056bc55dce1c73f9b7cae1aa4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFLf1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr+a6D*XPzhEogdr`Gor$?uTbJUCqDx;p&H8)4r=Su0A{SY{rsxbq4hpvo3Yb zTvysUr$(=)P^IYQgjc<@*Zx}f``z64DP_I$ZRY>}{pZ*0-%~B7olZY9f7R|9-P$kD zzFf+_TyN0u`SIt=H*SBp^5M;;Hxv9OR%uuJC)eygd}Z&kYjFjgZ*RQ)wfgsm#~*U* zr=^tj{hIlEj?LUh>mU7^|NHgCHwTZbSrxH*!n`dPb1zkO%w4_xbbkF5V7M_*11SDv zVPs&)V9)^>28t5~_8kowP0cN0Opz^}&217)zFjT;OyUj+rW!4Rd|Flv25}MG+;&V} z3=@(B_+7bU)B_m=<@ge%%`?eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 diff --git a/doc/ref/csharp/html/icons/privproperty.gif b/doc/ref/csharp/html/icons/privproperty.gif deleted file mode 100644 index b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmZ?wbhEHb6krfw_&$T-|NsAs)*t!*_xJtBuWIMsU$g!6|JQkr-VrCx-Te0d|C%NJ z|KDc#`iGpnaQD>3dpizXdi?CwzT?+6?LK$##HE5n?}9|H1*;ETy8h_kiHi+|F+YC) zd+_viY3rPnvfkYKX@^c;e);mzk;$UQ>Y{gVUU{=ZaB^$$wHr64wgkWb^84*^@73E+ zf4QE%Zbro0!wx@w{k?ZEv8rpKe^T|Gy&(BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGDaQ4Lh`rPOfGiB|kYwkSxG`b>k*`oNO7)Rg0u+B-# z18g0q&0TV2$JD1!?uTbJ)z&xlObBqCXS85iLwZ6`cTr$+Y44wZ{}xYgc=YVeuU$%d zicHs5>iJt4eERnH>E*U%2iKiDb?DLAsx@mjMEZuOl=c1m{r~U3e{*)seD~}B)7PJ$ zz59LO_{HV>mT0EQ{QLiZegvM@3* z%wW&~X$9p829DnhhMY%Cj-2iAu6$vlInmK)kpr_~;3LCh4M#P#Q*QiBR9>`Hk~>1; z#zz(RF58Sgfryzdj{U;ie_|$HYU1RyEas3fT)cpz)v;7;1EaHA3%^t7xQ zt(lQk$EC6HC36DtS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o diff --git a/doc/ref/csharp/html/icons/privstructure.gif b/doc/ref/csharp/html/icons/privstructure.gif deleted file mode 100644 index ed6d1ef68f8736e5c05137be2af0ff7714ddb85b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZ?wbhEHb6krfwc$UZT|NsB{k6(RzcjN2h?jGIVhpR-szrX#Y;OUy}ryac`8k2Z_ z@BIDv-H#LJZvJ}l`*!M`Qy1@@ym0sat*<9$h(CVz>ir&_-|zqIIB@CG^+(RdC-)t{ zwqW%k2IHCEUeEn_%=zsWiC@ouZ`ytC_q#uzZe4l1S>nT|FQu(>er^Bt?bY0GYrb7d zy*#gi@9oUD{z=t$my4#9^~M!+KB#{9Vd2N!hp%khb@t2cQqTF1cOShHo8O*N)>pXg zHH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3_;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z<^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q diff --git a/doc/ref/csharp/html/icons/protclass.gif b/doc/ref/csharp/html/icons/protclass.gif deleted file mode 100644 index 0f9294292a9b5f94a281de7657b5555d06bb4a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaUU(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5fY;zXP32Fyxl50uY&Kx0h7BEa_ z?`}`~_jQeF^42G}kG*|#swZ3i{XYG#uh+de5exJS!%zc?KUo+V7+e^1Kn@4R2?P7q z2A3um22KuUhUTv3Rt|a5j-IYweO2iRO$>saEp2LIin69W%r1i5vwPJSD61@SVc{0$ zW?}BrkT%y`zfo9Rh>wBUOiR|0hv}r@z5^@__Ply>21}VX=$>`4;I(99Gf{H6wt-Kg ziPy=-fn9;?QL_XqqYJM!8#}wmyT^>I0@{ov6%2_E_j}6!DimmZXz1u?W)nFfFy+ks jL+qbB9IhJYjEY8z0)sUGw};FY diff --git a/doc/ref/csharp/html/icons/protdelegate.gif b/doc/ref/csharp/html/icons/protdelegate.gif deleted file mode 100644 index b209f2d816d78188dbcd93907917d7a0ef34eaa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mix^8B4gbm`4|&u-s;K7H|8YyZs6doR3x z_j&TdT|a;QzPRU+cYNjj^Xpc+uA07N@6j!{KD@sF_1lk==kIRVefIw2S1Y%i+_-M) z-ecE}pSyD{_tJ!U8y49u{fPP+3%f) zFMoJ(?Q;5+wL8vCUa)iavMt*WUINA!!ziF$2q^w!VPs&Kz@P&%5|k$xINmWRa>{fl zaL=>hVAE3JU}|3=V-}|qvSL}Us7ElH;!KMVf^0?;7;-c>3bamE^yxBiI-JPZ%5C1D zlgXgT(lA?dhsMfcr2~9UzGi0{Ltdygs2goj;e4RvFx{n0&S6)vf3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#TG8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 diff --git a/doc/ref/csharp/html/icons/protenumeration.gif b/doc/ref/csharp/html/icons/protenumeration.gif deleted file mode 100644 index cc96bb635982abc9d306f219ebdd71d29f95757c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 583 zcmZ?wbhEHb6krfwcoxO*cwfNXJyAbyWGrsbORt)`XI}KX1Nx8l`hR;p|JB8!{ye2m zk0*Y4Hsj0lneXqkzPnNX_FB!CXEVRQJ^%Vr>BoDW-`_5)>RI;bVSiQk^1Q~`_jY(b zy0~)tH18W596!9ie`%$~|MNy?78$<2Sp4<%g8arg54O9UKCt=oqt(k=EpDFOI=>_C z^~1B@UY)qPKlAC~sLu~q&1{HRGO_gO(U`_G=gmtdytz{O{&s73q0h$$edSS>Z8`2O znXX@-?fm*?)7KaKUYv;i_jS$9BQxKh=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&NlUeGH<Cw3dOhd6|LdLB1d>tfmE9rf=H=>LCGe_~~Pf1c9Y zN2i`Wee~h={r~5U{yf?6e(!{TpKh+3o^ba}-}A@!UM^@{)@m^|U;ggVrVlT!J-L1C z-R)^#-)ySPar^!2$G7*FzkmPs?oj7~Znt-@?)5aqoY+)xdVOiOzvlA`ookyEUYv-% zee250RdruquX}!d^YrH6Z=YVqxf{HEdVl$pglFeFPwkt3Y{!I%VDAH)`d=)qdHV2H zN0rz4gA0FtdAw$N*6YVto?c$vlP%wqq4enP)mIzppFX($@9UaRXQte{ac+Kv?2pg) zvXVT$9>{z7?BR!Flm7qz&oIb<;!hSv1_ply9gw>~al*hpvBAHoxuvzO*;ZJ?L_*ch zrrn>JpF`1-!Cax;i&>CWhryd?;$&7A2J6M`@^gI{l(Z*K;^1%>5M?klYT{;7<8%+3`kU9um%8i0?sP{ diff --git a/doc/ref/csharp/html/icons/protextension.gif b/doc/ref/csharp/html/icons/protextension.gif deleted file mode 100644 index dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3MV_iN9!Lg_h0dD?)!JI?*07!^J4C$ zcekf`l;3>)@T_a`r57h+f6e|~XHfs-_OS_m6My~sRi$11?bFL;trl$?{)cpY`0(P| z)%>dtImdfV`@X)}RHIk(Y{v7RZ21pYKGf;e?J3w>yyX9{b-&}M{F`Gl_uamCv6KFK zRNVBffAV_bo3O6WH&)F1@c6^Dpy{RRr6o)MKVI`#)q9p!z=9gx+OMzI`P4l;y}s19 z{_#|cX}?zgUKX%?zRmo*GwwY*^UOSc!>^gYUtfHkIPL$3s~`S-UE@>x;Pd0ppB{Yv z^6X2WTmSa1mX$%Pe$D@VG3(O*|Nj|i1{8m?FfuSCGU$M80L2Ld`>KY-rbJ!_hvtsX zRu_iI&Q2o+OEX)BsQzXKQC|)Y5r*g)iGDm>3LL=(%8SILmd1-a>Mx2*&^8H(u`pKg zv~q6dWA);!TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u diff --git a/doc/ref/csharp/html/icons/protfield.gif b/doc/ref/csharp/html/icons/protfield.gif deleted file mode 100644 index 9ae6833e0821dae813c941500d1e12a88c7c334f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmZ?wbhEHb6krfwc;>;tU_A5x|NlR3WZc~owYWhqdiIT(XaB!DpnrKs{iYkgqh?)y zetq+ocMndijNf|XVSk>|hu8NjH$0wu^3#VG*J`%B{P^up-=WVH>mS!{dTN@y_21Vu zPp@u~^IO@q_ubdm>$(qo`S$7MlMla}w>;W@{@MRqDVk9m-o3illPzDl;mP8Q{~o;i zGvUa$|L2XqzS%VQ*xT1%{w%!k@5PDO)9XtQ-TW~B!oPR7r#(B<)Vk%-vrm7Tw!eDv z@z2rQA15CExbO7SHGA)Ags-pO^mOj|e=)OftiSf>^~1AIZXa9LYH{h=PoSq5h5}Ih z$->CM;K85+ax5rL7}%#bcr-P)crdnhG&3qnh_-h&F=~m+3hMWFFj{G7vxy11Pq1*1 zXJa!EQk|e@39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U diff --git a/doc/ref/csharp/html/icons/protinterface.gif b/doc/ref/csharp/html/icons/protinterface.gif deleted file mode 100644 index a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+%v`?v$?aqRzOH$9d)n96>o)Bhta8)1|Mi^~NxQF@vOm zFpg~@_}FOOyjstQ&;S4bA^8LW000jFEC2ui01*HX000DJ@X1NvaHVQ_1K!j%1YSl7 z!f_N1>3$&4x&a`esrtx(3nZYOW9aw+9|nSwFt7k*i6}5BU@#N{&QsbXpcV~;Vlpr` lA6`ZyJSHd3NCJW(HUuSx#?^k8=*4}04GVmI1%!PO06U9(O_u-w diff --git a/doc/ref/csharp/html/icons/protoperator.gif b/doc/ref/csharp/html/icons/protoperator.gif deleted file mode 100644 index 2cb75ab8b05d4b8d65401c5270ae31836ce04f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmZ?wbhEHb6krfwc*el+|Ns9VH!|+-iCWyCcX>zsy94@eC70hmI`!t=#}BXX|37bZ zVrBfD`%n7wl)S3$oi{TqY?_(4!sFfTX;-}6{(W6jyEikvaza4Ui(`_)xl^8eeY5H7 z>vatWa<`xT8M)A|CtH5zwojcaUd`L~!Z)!hWtF#W`d-U~El+MAtK5~6TR*k)SVdBC zw@-X!Y1^C+FRn#4U3bhm@$S{V*!+%NTUVJzuYUdTY-s1F=hrt!_y0V-zBFO#f8&T{ znd<^isVOXLwRmwNHax4@J*u>DOEkmK1d2adzz){|k)SwXU~gz(Xlib0ZRXKz>tYb# zXp!h<5NolW$Y9jRz~5wLVJ6PU*6zq4JZ*U!JBuZ^v8;k5n}MpDi8aG2DMm&+^NB3d zBJxaJ%=?8HnV49am6~OmbQ$!xxfsuwwrDhKGpI8$G8;B)i8`ssF*r0mIHRcFY}2g# S#-5k6Rj^5?<@@qR25SJ^#+_vV diff --git a/doc/ref/csharp/html/icons/protproperty.gif b/doc/ref/csharp/html/icons/protproperty.gif deleted file mode 100644 index 55473d16e1321bc3e4cbcb5a165f51a55f9f07a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS;^7aopc;aF~qSuL)@dr;_n%Q4680UFSixNI0mLUEZ?`} z#fjKI|NeP<``x{HCBWA4%k}hc51ZeA`ThNF*3aMnPp>b1vqEsyu3Ha3{O_ETIk~lX z-HeEP2NTm1f({(NxOUx|ohP4OIC1FT*EMe*ukg1r@C^+6_UWZhKrk1(z|V(8pU#J+ zhWY<`z2U@6*`93qx38c7dQ^1w#Qx{kHwUkAytY!$e!8Z#0Qaw5N-tkNdUUob(l^}4 zKd3%8`p({vmeRPNkL%z3{BNu-dg$ck?WaC|z7%m}$JFA|njgRZww`HSJiX!D?aX6m zj_D~fEtuBu_OQdJSDO-IVqZTz`|9S@2e(daUDkNw{LN3_{{H>2Wa z5)tO9PzZ2J_GH&-Ss@Y8nantYm#1ru=I3P>cwO3fRJb-d9AnnClQ?kWF^jXjXc*6g z$c9Ia99*{BJ_t@;!YeGKpvG|G(^D1(UXfKXou3^abO}bWaxgF~Xq_k0z;|QC1jh&b z3|Wj1J{Gi}W3*sq`!jP<22TS6qn83-LBoj&>MSxM0V#~@8yqsyc&rT485o(k)WY3j zk_{(t@v*f`TYRGLDcgp_PZFFH92y0f&hPLzaGOJjGe+eKpX|mT4oo^q4hDIDIzBZr IGBQ{L0HyC{fdBvi diff --git a/doc/ref/csharp/html/icons/protstructure.gif b/doc/ref/csharp/html/icons/protstructure.gif deleted file mode 100644 index af356a1db0b8e8821d2f6c94734b98354875e85d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmZ?wbhEHb6krfwc$UoY|Ns9VH!{AxyYcwl4+i6ziyQQMbbBAJ67ih>_({Rj@9%G4 z-ckScarf_?zZ;Wy?(T{D{rb=STVGGi5Px?-|90w~Z?ETmJm&o8{h#-HbUxj>Qn>Bo z+bt6Pc}gc%#yc0E{D0o)*}2x=@BaLH{`>3eb$8C6fAjR(+szV3uHFA~tK`G$`;jYO zo_X;3?aa5^raC;Re)xImr+;79EUgtdc=Pp#7uW7C7yW!b?c;Ih&lh4oUyOO$@%+V! z*k!F2ukX$Le5>Ty%{}+ZA3SM!viAD_d&T$O-JUkjbbj>g8^7Kkt=jqK$EF|OUd?^` z=+xFD_rBaN{d6Jb)r41q|f1D*d+M+lPf8BUilmaDT_QSMz?o*$)gT1{wgxpDc_F49N^SAhSVn!oYr_ zA-Rcxi=By~sk1A&h22vqqNBUHRg}j^sJ*AFH<8EI!fYmk_@rbe_GucvViIb6Oq@%b zOoDl0%-2fuNs91tDs~tKxdkSf?v~`_<@FFb$fV01Et|lnaym3tUq?jAi`#~g(b~>c z&_66L(o&C&TiGCrU!K)bPSC~A!JbWt+nLFx!eAkT2=5Ob4nqdU13i55Od>XgPq~?x zm?e~$0vx!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn diff --git a/doc/ref/csharp/html/icons/pubclass.gif b/doc/ref/csharp/html/icons/pubclass.gif deleted file mode 100644 index 1a968ab633207f47ec5e3130ec676f0d43598bb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5Mo8Mbf(8r2 zp(R0XIx!l@Rf3{yHW~z|JTT0ir6tMRSy-d6W0S){R=L^}M$Ar41`Kl)d3;!=d+P}E z3NrF(N$K-&bt%+03NkRT^J(+3Gq4n@_Qg(`W;COaS31~v-h5AKCe0;2o(q_n1avjl otTWmmAj8DX?Cr$DwQ<*;tzL4nyP1!AF&G}%w~yhJrz3+k0J6oL{{R30 diff --git a/doc/ref/csharp/html/icons/pubdelegate.gif b/doc/ref/csharp/html/icons/pubdelegate.gif deleted file mode 100644 index 0a43eb261adccddee2206769150a9e2d964ed136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmeH`{WFsR0LLG0>%7DvcU^bR#jQK%xKkV}(m0l0*4uHXy30!^gj%}Nd&*TyI9D<@ zvNh&y4`a+Q^=w|YC(LZ@1(C@%8_USsGcV;o=nv@o`{$R>=e{RT;ju>(oB$_ajSB4S z?2Hp9kP-_cv{GkSkR{361hPEe{IHnYgYvO@Za)p|{=Kq({`%wgZh2`S#V}j1RIsSn zG6dOdruCn`mi0N5A?Rh5*9uh`YLGWTss0+9mJ@aLUVa%@B$>cnO6Lh=jK;n?4p`kJ z(i_ZMTifYRixe5MrRCKb-9m56SjfdRc<6idjpwCR4Tg6{G6U4i&QHx4wEAB^W{d(@ zB^hF^tga&b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6nY#WHr%q^+gG;Pa{2b1CXc-3NLHr%U>g(W;)*VhPC+v6*Ex zP-FXG@p~?n*#fqLNE2dST9qe{EH14un??M(;rA8oGL@#YXLNgeyP6|jUE82A8x~B< zYwL(sQ*W_s7JgzEGx!hQR!Byshxr;~;r!UGaRIEPgFWJ*i7Oee*qwt-{2`-h`HM&~ ztk68lrOhf$H?j(2lC!yx%rI}Jh0yC-d%kzi6_j&pBkOoVxk|~ZZGnvoOI2)95uMZB z$I8s1C?>T0-ch}Jk(f>XsWXoM&_`ar`!^`?fB$U2V*_Oc093$dm)QLTU}FM;Y~7-u zZ!RvVJ>D3S82*SOKk|uQ$4DFjJjJUNE5%{l03dpr?X=G|;1!ZWM5S82cE}uf5XFY^ zQ9x=zr60x%=XpFVoTrMO)1vk~^FfQ9X$3hR4uJ=NMeS?HzyRy)X^(@D9XcY=$|_zs zSmNS;LFEkHcP@3L@-V5Gxqf>ev^C`97msuIrMf~1QhX%SKhcEJKTffKNw}%Nk%$Qq zd7kJadkcv;8xp}&xLFhSR`TXVl3grTdMLMuVDApotZUHj_$OW=i!UNB787i>XOA5w W!S3M>-YMZwV($I|X%HF(1pfiQ@~q|n diff --git a/doc/ref/csharp/html/icons/pubenumeration.gif b/doc/ref/csharp/html/icons/pubenumeration.gif deleted file mode 100644 index 46888adef937f09868b1aff485010ad847625183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmV-Z0j&N(Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK(X`h>z|#7Zt2TuZ-Jcm?a$@ITH?{E>B?vC+=aBHilvcv^yZk%qA_}lr+8dCZh@Qc z+k=5-L-F8_pNL-BziE|zWSN9&dR{ztS~=^`gneQ_?9_R@tdifjNurK)@7sl*iE#h_ z{{R30A^8LW002G!EC2ui01yBW000JXK%a0(EE!iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M-8eVBIr#a7&Z+tGuQt>#pOO#}?0x>=!f)>{|M-0G_pcwfZ(ZrA@_Mnf=Gpnq zmrw66=yp4>bIF?NS=s)YSxFvu&-Bf&kUg=fq9;S?<*K@;53avl(D?lEy|qmWUk~J+ z+Bg61(Wa*lZ~gr8_}GpKpUzCF%yD~nsPq4m`d=5zo}Y+(*xvO2|9=J?K=CIFBLjmu zgAPa@MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3=_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%ePmOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6Hlv&#nK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{<89)!|G(D#{&3~PuhqXFt$#GZ zZ{k#oX?JJbD^)N3^x(63{D%Mk|1%64p!k!8k%1wQK?md_P@FKZw=@Jc1#&W&G0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S diff --git a/doc/ref/csharp/html/icons/pubfield.gif b/doc/ref/csharp/html/icons/pubfield.gif deleted file mode 100644 index 5aed17576f4493ccfdb12f7a8a55fa2cbd74041c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmZ?wbhEHb6krfwxT?dzU_3K=_Klfm|8KhSJ8IVTsr#N)Zg{-)$iwF!e=of7Z{p#P z_ul^M+WW3)`>Uh3Kh|z~su8|^-|45`C41!jR$hMoYyGu9l^dR1diL|uvmbqjKJU8z z@&Et-hi-nj`r>!@fiGtt|J;A$y=n5+`4|4pJ^5+Ek#CDH{;OF3xMuV7x#$1I%)U{x z<>i{a_kda$$OVc&Sr{1@bbt^DKz?Fi3vrlM;GrYc@1gXp(Sy%ktu684k_eBco`+3u zGHjR}lT;k%iD)!t7%(bu_c~@WFz)DYZCE9=iP_9ulaaBGLC`~irKODBPllz(&xwyg Nd(!k7GhG}RtO2HXg;M|k diff --git a/doc/ref/csharp/html/icons/pubinterface.gif b/doc/ref/csharp/html/icons/pubinterface.gif deleted file mode 100644 index c38a4c46a9a7603bc498664c294c7c06a713e555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmZ?wbhEHb6krfwxN5|3ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82lE)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3yhlKQmSzza_!jd?!NB&pZmx!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{)5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M diff --git a/doc/ref/csharp/html/icons/puboperator.gif b/doc/ref/csharp/html/icons/puboperator.gif deleted file mode 100644 index 0ebe10a7ec532625741cc8668b1126f2553cdc9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmZ?wbhEHb6krfwxXQrr|Nnols(WwVeRM0i9NPIQy8maw)c<$xKM81hkzP3=w|;8n zu9VpPj#Fw1>9hZrw#_+jW|+Ayuy9Ls{=)w$tGs;^tFCyvC9d#rk1DlH*wSzy_n4$` zQgL@-(@dZEO5=!S;aSa*3+-&v_nJnpcFZ}^d90##ZzcovfZ|UUuwgnN667ZawqS>b z0uLQ7ey+tr7X$^&y&alvbTCQyF}P%C2naMD{LsJ{u_oi`k&A!ZJQtmLF?n6|?Szd1 l$~7_D1)D@O#GT~o%bXk;tN}%7Un2kj diff --git a/doc/ref/csharp/html/icons/pubproperty.gif b/doc/ref/csharp/html/icons/pubproperty.gif deleted file mode 100644 index dfad7b43006984b0d27846a9c6d23d9bfb94ec95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVMGba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31i;r~82J1CqnCh$bzU0~3xIK4DP|np>HmqGY1XMO=I;CB?f-vmTl3Ob zwWfhgP*e8dgO;77(Bl94x+41PunGqd`1<`&JwatwPwmG`u9#ST!Em?A@zv`8`r>l@ z{{E(-U;O_6j$#x`PEp?J`mC+6`TPHJTtULg)AG+&+`UxY+0;u*PN0^6jF3?6!$9=c zXSvDci*ixKxRuk{FMI-(}u{I9ZgYI|Ii=*|Nj6000000A^8LW004aeEC2ui z01yBW000NRfPI34goTAAb!|{YZy0w+I6hs3BUVlYm|${jbV@vg87~N21rtDPTUBBe z1g$p)F)j!pEl+VPKX57pIdcY54;nTISsZ#DWI7%MUIuv&DGeYNd=ys^S|&mZ0eD3+ z0Wb|qMl4f;J4oCD0s#SGXK8j#1B5jJ>;V@;Gztny^#-X40001lf(S(f6vP0ZfH7E3 vFfl`d%ECSk3!*_-aK^Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i&%1CPg|qcFzfuSnN3rm2{>v z$jq9|;iMv{Ai~7RyQIn8jYC~(l?0QVFh8$khXseZl!o*UIbME#ec^qK0!o6?Ym`q| zI~(W;%X?Z1IIiJi6E#)S)zmU!Z92#Fkc&rD+sxLL^>!2AJ2B1=tS+qLCcFj<667bb vva>O?uq!GFSrunAz6B diff --git a/doc/ref/csharp/html/icons/slMobile.gif b/doc/ref/csharp/html/icons/slMobile.gif deleted file mode 100644 index 5edc31f94c61a7a50c3285ef00dcbe86e8690974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`>+3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 diff --git a/doc/ref/csharp/html/icons/static.gif b/doc/ref/csharp/html/icons/static.gif deleted file mode 100644 index 33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmZ?wbhEHb;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6Afdzk*vw)JdXGPApH;j#U@kM7;k+&W>y z^wuAltPk$pT~`~kchkxZQyRXfGPHEeZ0eYOFP8aU0_X7)rxq_>)-z%8ruFMDoj-H> z^qK2dF6~Uw+p%NUy!ne7dzQ|dzj*Jy{qIs)>l%8FB+6~*F05{x+}7UT(%Sp$*RQVL z1$(z`+`VV-`swY5cWvHL=&-5K`^3RLyVou`apL5QScdH>+WX>V>l%9-nkN1E^JnSO z73=bxUcUi?x988Dd;aX{#Okt|hW@>K_pi-%S+;WB%NNhr<-4qD%f55_c6Z-`|Ns9p z&=Dy9WMO1rh-T0M*$Ijh2KJ_gNS5f9*0wel8;SOwRxe)eu-;y0H~Yyw>~``!!FopR zvOZc2t?JC;`aM?e!YwYI){K*##LWDIqD=f|C@AVGi)hb?W)k3Z3_TL97O1MibA-#o zAjFl8V}^y0xu&Uc#AHKeR_|zOK7O4ZTP2On(E)-oa_vl_QkK50k`CbvjSLLd0ER== A(*OVf diff --git a/doc/ref/csharp/html/index.html b/doc/ref/csharp/html/index.html deleted file mode 100644 index c7d36cc3c3c..00000000000 --- a/doc/ref/csharp/html/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - gRPC C# - Redirect - - -

    If you are not redirected automatically, follow this link to the default topic.

    - - diff --git a/doc/ref/csharp/html/scripts/branding-Website.js b/doc/ref/csharp/html/scripts/branding-Website.js deleted file mode 100644 index 06ab9808ccc..00000000000 --- a/doc/ref/csharp/html/scripts/branding-Website.js +++ /dev/null @@ -1,624 +0,0 @@ -//=============================================================================================================== -// System : Sandcastle Help File Builder -// File : branding-Website.js -// Author : Eric Woodruff (Eric@EWoodruff.us) -// Updated : 03/04/2015 -// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved -// Portions Copyright 2014 Sam Harwell, All rights reserved -// -// This file contains the methods necessary to implement the lightweight TOC and search functionality. -// -// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be -// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This -// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, -// and source files. -// -// Date Who Comments -// ============================================================================================================== -// 05/04/2014 EFW Created the code based on a combination of the lightweight TOC code from Sam Harwell and -// the existing search code from SHFB. -//=============================================================================================================== - -// Width of the TOC -var tocWidth; - -// Search method (0 = To be determined, 1 = ASPX, 2 = PHP, anything else = client-side script -var searchMethod = 0; - -// Table of contents script - -// Initialize the TOC by restoring its width from the cookie if present -function InitializeToc() -{ - tocWidth = parseInt(GetCookie("TocWidth", "280")); - ResizeToc(); - $(window).resize(SetNavHeight) -} - -function SetNavHeight() -{ - $leftNav = $("#leftNav") - $topicContent = $("#TopicContent") - leftNavPadding = $leftNav.outerHeight() - $leftNav.height() - contentPadding = $topicContent.outerHeight() - $topicContent.height() - // want outer height of left navigation div to match outer height of content - leftNavHeight = $topicContent.outerHeight() - leftNavPadding - $leftNav.css("min-height", leftNavHeight + "px") -} - -// Increase the TOC width -function OnIncreaseToc() -{ - if(tocWidth < 1) - tocWidth = 280; - else - tocWidth += 100; - - if(tocWidth > 680) - tocWidth = 0; - - ResizeToc(); - SetCookie("TocWidth", tocWidth); -} - -// Reset the TOC to its default width -function OnResetToc() -{ - tocWidth = 0; - - ResizeToc(); - SetCookie("TocWidth", tocWidth); -} - -// Resize the TOC width -function ResizeToc() -{ - var toc = document.getElementById("leftNav"); - - if(toc) - { - // Set TOC width - toc.style.width = tocWidth + "px"; - - var leftNavPadding = 10; - - document.getElementById("TopicContent").style.marginLeft = (tocWidth + leftNavPadding) + "px"; - - // Position images - document.getElementById("TocResize").style.left = (tocWidth + leftNavPadding) + "px"; - - // Hide/show increase TOC width image - document.getElementById("ResizeImageIncrease").style.display = (tocWidth >= 680) ? "none" : ""; - - // Hide/show reset TOC width image - document.getElementById("ResizeImageReset").style.display = (tocWidth < 680) ? "none" : ""; - } - - SetNavHeight() -} - -// Toggle a TOC entry between its collapsed and expanded state -function Toggle(item) -{ - var isExpanded = $(item).hasClass("tocExpanded"); - - $(item).toggleClass("tocExpanded tocCollapsed"); - - if(isExpanded) - { - Collapse($(item).parent()); - } - else - { - var childrenLoaded = $(item).parent().attr("data-childrenloaded"); - - if(childrenLoaded) - { - Expand($(item).parent()); - } - else - { - var tocid = $(item).next().attr("tocid"); - - $.ajax({ - url: "../toc/" + tocid + ".xml", - async: true, - dataType: "xml", - success: function(data) - { - BuildChildren($(item).parent(), data); - } - }); - } - } -} - -// HTML encode a value for use on the page -function HtmlEncode(value) -{ - // Create an in-memory div, set it's inner text (which jQuery automatically encodes) then grab the encoded - // contents back out. The div never exists on the page. - return $('
    ').text(value).html(); -} - -// Build the child entries of a TOC entry -function BuildChildren(tocDiv, data) -{ - var childLevel = +tocDiv.attr("data-toclevel") + 1; - var childTocLevel = childLevel >= 10 ? 10 : childLevel; - var elements = data.getElementsByTagName("HelpTOCNode"); - - var isRoot = true; - - if(data.getElementsByTagName("HelpTOC").length == 0) - { - // The first node is the root node of this group, don't show it again - isRoot = false; - } - - for(var i = elements.length - 1; i > 0 || (isRoot && i == 0); i--) - { - var childHRef, childId = elements[i].getAttribute("Url"); - - if(childId != null && childId.length > 5) - { - // The Url attribute has the form "html/{childId}.htm" - childHRef = childId.substring(5, childId.length); - childId = childId.substring(5, childId.lastIndexOf(".")); - } - else - { - // The Id attribute is in raw form. There is no URL (empty container node). In this case, we'll - // just ignore it and go nowhere. It's a rare case that isn't worth trying to get the first child. - // Instead, we'll just expand the node (see below). - childHRef = "#"; - childId = elements[i].getAttribute("Id"); - } - - var existingItem = null; - - tocDiv.nextAll().each(function() - { - if(!existingItem && $(this).children().last("a").attr("tocid") == childId) - { - existingItem = $(this); - } - }); - - if(existingItem != null) - { - // First move the children of the existing item - var existingChildLevel = +existingItem.attr("data-toclevel"); - var doneMoving = false; - var inserter = tocDiv; - - existingItem.nextAll().each(function() - { - if(!doneMoving && +$(this).attr("data-toclevel") > existingChildLevel) - { - inserter.after($(this)); - inserter = $(this); - $(this).attr("data-toclevel", +$(this).attr("data-toclevel") + childLevel - existingChildLevel); - - if($(this).hasClass("current")) - $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel") + " current")); - else - $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel"))); - } - else - { - doneMoving = true; - } - }); - - // Now move the existing item itself - tocDiv.after(existingItem); - existingItem.attr("data-toclevel", childLevel); - existingItem.attr("class", "toclevel" + childLevel); - } - else - { - var hasChildren = elements[i].getAttribute("HasChildren"); - var childTitle = HtmlEncode(elements[i].getAttribute("Title")); - var expander = ""; - - if(hasChildren) - expander = ""; - - var text = "
    " + - expander + "" + - childTitle + "
    "; - - tocDiv.after(text); - } - } - - tocDiv.attr("data-childrenloaded", true); -} - -// Collapse a TOC entry -function Collapse(tocDiv) -{ - // Hide all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the - // current item's value. - var tocLevel = +tocDiv.attr("data-toclevel"); - var done = false; - - tocDiv.nextAll().each(function() - { - if(!done && +$(this).attr("data-toclevel") > tocLevel) - { - $(this).hide(); - } - else - { - done = true; - } - }); -} - -// Expand a TOC entry -function Expand(tocDiv) -{ - // Show all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the - // current item's value - var tocLevel = +tocDiv.attr("data-toclevel"); - var done = false; - - tocDiv.nextAll().each(function() - { - if(done) - { - return; - } - - var childTocLevel = +$(this).attr("data-toclevel"); - - if(childTocLevel == tocLevel + 1) - { - $(this).show(); - - if($(this).children("a").first().hasClass("tocExpanded")) - { - Expand($(this)); - } - } - else if(childTocLevel > tocLevel + 1) - { - // Ignore this node, handled by recursive calls - } - else - { - done = true; - } - }); -} - -// This is called to prepare for dragging the sizer div -function OnMouseDown(event) -{ - document.addEventListener("mousemove", OnMouseMove, true); - document.addEventListener("mouseup", OnMouseUp, true); - event.preventDefault(); -} - -// Resize the TOC as the sizer is dragged -function OnMouseMove(event) -{ - tocWidth = (event.clientX > 700) ? 700 : (event.clientX < 100) ? 100 : event.clientX; - - ResizeToc(); -} - -// Finish the drag operation when the mouse button is released -function OnMouseUp(event) -{ - document.removeEventListener("mousemove", OnMouseMove, true); - document.removeEventListener("mouseup", OnMouseUp, true); - - SetCookie("TocWidth", tocWidth); -} - -// Search functions - -// Transfer to the search page from a topic -function TransferToSearchPage() -{ - var searchText = document.getElementById("SearchTextBox").value.trim(); - - if(searchText.length != 0) - document.location.replace(encodeURI("../search.html?SearchText=" + searchText)); -} - -// Initiate a search when the search page loads -function OnSearchPageLoad() -{ - var queryString = decodeURI(document.location.search); - - if(queryString != "") - { - var idx, options = queryString.split(/[\?\=\&]/); - - for(idx = 0; idx < options.length; idx++) - if(options[idx] == "SearchText" && idx + 1 < options.length) - { - document.getElementById("txtSearchText").value = options[idx + 1]; - PerformSearch(); - break; - } - } -} - -// Perform a search using the best available method -function PerformSearch() -{ - var searchText = document.getElementById("txtSearchText").value; - var sortByTitle = document.getElementById("chkSortByTitle").checked; - var searchResults = document.getElementById("searchResults"); - - if(searchText.length == 0) - { - searchResults.innerHTML = "Nothing found"; - return; - } - - searchResults.innerHTML = "Searching..."; - - // Determine the search method if not done already. The ASPX and PHP searches are more efficient as they - // run asynchronously server-side. If they can't be used, it defaults to the client-side script below which - // will work but has to download the index files. For large help sites, this can be inefficient. - if(searchMethod == 0) - searchMethod = DetermineSearchMethod(); - - if(searchMethod == 1) - { - $.ajax({ - type: "GET", - url: encodeURI("SearchHelp.aspx?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), - success: function(html) - { - searchResults.innerHTML = html; - } - }); - - return; - } - - if(searchMethod == 2) - { - $.ajax({ - type: "GET", - url: encodeURI("SearchHelp.php?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), - success: function(html) - { - searchResults.innerHTML = html; - } - }); - - return; - } - - // Parse the keywords - var keywords = ParseKeywords(searchText); - - // Get the list of files. We'll be getting multiple files so we need to do this synchronously. - var fileList = []; - - $.ajax({ - type: "GET", - url: "fti/FTI_Files.json", - dataType: "json", - async: false, - success: function(data) - { - $.each(data, function(key, val) - { - fileList[key] = val; - }); - } - }); - - var letters = []; - var wordDictionary = {}; - var wordNotFound = false; - - // Load the keyword files for each keyword starting letter - for(var idx = 0; idx < keywords.length && !wordNotFound; idx++) - { - var letter = keywords[idx].substring(0, 1); - - if($.inArray(letter, letters) == -1) - { - letters.push(letter); - - $.ajax({ - type: "GET", - url: "fti/FTI_" + letter.charCodeAt(0) + ".json", - dataType: "json", - async: false, - success: function(data) - { - var wordCount = 0; - - $.each(data, function(key, val) - { - wordDictionary[key] = val; - wordCount++; - }); - - if(wordCount == 0) - wordNotFound = true; - } - }); - } - } - - if(wordNotFound) - searchResults.innerHTML = "Nothing found"; - else - searchResults.innerHTML = SearchForKeywords(keywords, fileList, wordDictionary, sortByTitle); -} - -// Determine the search method by seeing if the ASPX or PHP search pages are present and working -function DetermineSearchMethod() -{ - var method = 3; - - try - { - $.ajax({ - type: "GET", - url: "SearchHelp.aspx", - async: false, - success: function(html) - { - if(html.substring(0, 8) == "") - method = 1; - } - }); - - if(method == 3) - $.ajax({ - type: "GET", - url: "SearchHelp.php", - async: false, - success: function(html) - { - if(html.substring(0, 8) == "") - method = 2; - } - }); - } - catch(e) - { - } - - return method; -} - -// Split the search text up into keywords -function ParseKeywords(keywords) -{ - var keywordList = []; - var checkWord; - var words = keywords.split(/\W+/); - - for(var idx = 0; idx < words.length; idx++) - { - checkWord = words[idx].toLowerCase(); - - if(checkWord.length > 2) - { - var charCode = checkWord.charCodeAt(0); - - if((charCode < 48 || charCode > 57) && $.inArray(checkWord, keywordList) == -1) - keywordList.push(checkWord); - } - } - - return keywordList; -} - -// Search for keywords and generate a block of HTML containing the results -function SearchForKeywords(keywords, fileInfo, wordDictionary, sortByTitle) -{ - var matches = [], matchingFileIndices = [], rankings = []; - var isFirst = true; - - for(var idx = 0; idx < keywords.length; idx++) - { - var word = keywords[idx]; - var occurrences = wordDictionary[word]; - - // All keywords must be found - if(occurrences == null) - return "Nothing found"; - - matches[word] = occurrences; - var occurrenceIndices = []; - - // Get a list of the file indices for this match. These are 64-bit numbers but JavaScript only does - // bit shifts on 32-bit values so we divide by 2^16 to get the same effect as ">> 16" and use floor() - // to truncate the result. - for(var ind in occurrences) - occurrenceIndices.push(Math.floor(occurrences[ind] / Math.pow(2, 16))); - - if(isFirst) - { - isFirst = false; - - for(var matchInd in occurrenceIndices) - matchingFileIndices.push(occurrenceIndices[matchInd]); - } - else - { - // After the first match, remove files that do not appear for all found keywords - for(var checkIdx = 0; checkIdx < matchingFileIndices.length; checkIdx++) - if($.inArray(matchingFileIndices[checkIdx], occurrenceIndices) == -1) - { - matchingFileIndices.splice(checkIdx, 1); - checkIdx--; - } - } - } - - if(matchingFileIndices.length == 0) - return "Nothing found"; - - // Rank the files based on the number of times the words occurs - for(var fileIdx = 0; fileIdx < matchingFileIndices.length; fileIdx++) - { - // Split out the title, filename, and word count - var matchingIdx = matchingFileIndices[fileIdx]; - var fileIndex = fileInfo[matchingIdx].split(/\0/); - - var title = fileIndex[0]; - var filename = fileIndex[1]; - var wordCount = parseInt(fileIndex[2]); - var matchCount = 0; - - for(var idx = 0; idx < keywords.length; idx++) - { - occurrences = matches[keywords[idx]]; - - for(var ind in occurrences) - { - var entry = occurrences[ind]; - - // These are 64-bit numbers but JavaScript only does bit shifts on 32-bit values so we divide - // by 2^16 to get the same effect as ">> 16" and use floor() to truncate the result. - if(Math.floor(entry / Math.pow(2, 16)) == matchingIdx) - matchCount += (entry & 0xFFFF); - } - } - - rankings.push({ Filename: filename, PageTitle: title, Rank: matchCount * 1000 / wordCount }); - - if(rankings.length > 99) - break; - } - - rankings.sort(function(x, y) - { - if(!sortByTitle) - return y.Rank - x.Rank; - - return x.PageTitle.localeCompare(y.PageTitle); - }); - - // Format and return the results - var content = "
      "; - - for(var r in rankings) - content += "
    1. " + - rankings[r].PageTitle + "
    2. "; - - content += "
    "; - - if(rankings.length < matchingFileIndices.length) - content += "

    Omitted " + (matchingFileIndices.length - rankings.length) + " more results

    "; - - return content; -} diff --git a/doc/ref/csharp/html/scripts/branding.js b/doc/ref/csharp/html/scripts/branding.js deleted file mode 100644 index 9be90f3d478..00000000000 --- a/doc/ref/csharp/html/scripts/branding.js +++ /dev/null @@ -1,528 +0,0 @@ -//=============================================================================================================== -// System : Sandcastle Help File Builder -// File : branding.js -// Author : Eric Woodruff (Eric@EWoodruff.us) -// Updated : 05/15/2014 -// Note : Copyright 2014, Eric Woodruff, All rights reserved -// Portions Copyright 2010-2014 Microsoft, All rights reserved -// -// This file contains the methods necessary to implement the language filtering, collapsible section, and -// copy to clipboard options. -// -// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be -// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This -// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, -// and source files. -// -// Date Who Comments -// ============================================================================================================== -// 05/04/2014 EFW Created the code based on the MS Help Viewer script -//=============================================================================================================== - -// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is -// selected. -var allTabSetIds = new Array(); - -// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the -// spans and update them when the user changes to a different language tab. The values of the dictionary -// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language -// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple -// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages -// to which it does not apply. -var allLSTSetIds = new Object(); - -// Help 1 persistence support. This code must appear inline. -var isHelp1; - -var curLoc = document.location + "."; - -if(curLoc.indexOf("mk:@MSITStore") == 0) -{ - isHelp1 = true; - curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); - document.location.replace(curLoc); -} -else - if(curLoc.indexOf("ms-its:") == 0) - isHelp1 = true; - else - isHelp1 = false; - -// The OnLoad method -function OnLoad(defaultLanguage) -{ - var defLang; - - if(typeof (defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") - defLang = "vb"; - else - defLang = defaultLanguage; - - // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it - // belongs if necessary. - try - { - var footer = document.getElementById("pageFooter") - - if(footer) - { - var footerParent = document.body; - - if(footer.parentElement != footerParent) - { - footer.parentElement.removeChild(footer); - footerParent.appendChild(footer); - } - } - } - catch(e) - { - } - - var language = GetCookie("CodeSnippetContainerLanguage", defLang); - - // If LST exists on the page, set the LST to show the user selected programming language - UpdateLST(language); - - // If code snippet groups exist, set the current language for them - if(allTabSetIds.length > 0) - { - var i = 0; - - while(i < allTabSetIds.length) - { - var tabCount = 1; - - // The tab count may vary so find the last one in this set - while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) - tabCount++; - - tabCount--; - - // If not grouped, skip it - if(tabCount < 2) - { - // Disable the Copy Code link if in Chrome - if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1) - document.getElementById(allTabSetIds[i] + "_copyCode").style.display = "none"; - } - else - SetCurrentLanguage(allTabSetIds[i], language, tabCount); - - i++; - } - } - - InitializeToc(); -} - -// This is just a place holder. The website script implements this function to initialize it's in-page TOC pane -function InitializeToc() -{ -} - -// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter -// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object -// to update the node value of the LST span tag per the user's chosen programming language. -function UpdateLST(language) -{ - for(var lstMember in allLSTSetIds) - { - var devLangSpan = document.getElementById(lstMember); - - if(devLangSpan != null) - { - // There may be a carriage return before the LST span in the content so the replace function below - // is used to trim the whitespace at the end of the previous node of the current LST node. - if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) - devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); - - var langs = allLSTSetIds[lstMember].split("|"); - var k = 0; - var keyValue; - - while(k < langs.length) - { - keyValue = langs[k].split("="); - - if(keyValue[0] == language) - { - devLangSpan.innerHTML = keyValue[1]; - - // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts - // with a space to prevent things running together. - if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) - { - if (devLangSpan.parentNode.nextSibling.nodeValue != null && - !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) - { - devLangSpan.innerHTML = keyValue[1] + " "; - } - } - break; - } - - k++; - } - - // If not found, default to the neutral language. If there is no neutral language entry, clear the - // content to hide it. - if(k >= langs.length) - { - if(language != "nu") - { - k = 0; - - while(k < langs.length) - { - keyValue = langs[k].split("="); - - if(keyValue[0] == "nu") - { - devLangSpan.innerHTML = keyValue[1]; - - // Help 1 and MS Help Viewer workaround. Add a space if the following text element - // starts with a space to prevent things running together. - if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) - { - if(devLangSpan.parentNode.nextSibling.nodeValue != null && - !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) - { - devLangSpan.innerHTML = keyValue[1] + " "; - } - } - break; - } - - k++; - } - } - - if(k >= langs.length) - devLangSpan.innerHTML = ""; - } - } - } -} - -// Get the specified cookie. If not found, return the specified default value. -function GetCookie(cookieName, defaultValue) -{ - if(isHelp1) - { - try - { - var globals = Help1Globals; - - var value = globals.Load(cookieName); - - if(value == null) - value = defaultValue; - - return value; - } - catch(e) - { - return defaultValue; - } - } - - var cookie = document.cookie.split("; "); - - for(var i = 0; i < cookie.length; i++) - { - var crumb = cookie[i].split("="); - - if(cookieName == crumb[0]) - return unescape(crumb[1]) - } - - return defaultValue; -} - -// Set the specified cookie to the specified value -function SetCookie(name, value) -{ - if(isHelp1) - { - try - { - var globals = Help1Globals; - - globals.Save(name, value); - } - catch(e) - { - } - - return; - } - - var today = new Date(); - - today.setTime(today.getTime()); - - // Set the expiration time to be 60 days from now (in milliseconds) - var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); - - document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; -} - -// Add a language-specific text ID -function AddLanguageSpecificTextSet(lstId) -{ - var keyValue = lstId.split("?") - - allLSTSetIds[keyValue[0]] = keyValue[1]; -} - -// Add a language tab set ID -function AddLanguageTabSet(tabSetId) -{ - allTabSetIds.push(tabSetId); -} - -// Switch the active tab for all of other code snippets -function ChangeTab(tabSetId, language, snippetIdx, snippetCount) -{ - SetCookie("CodeSnippetContainerLanguage", language); - - SetActiveTab(tabSetId, snippetIdx, snippetCount); - - // If LST exists on the page, set the LST to show the user selected programming language - UpdateLST(language); - - var i = 0; - - while(i < allTabSetIds.length) - { - // We just care about other snippets - if(allTabSetIds[i] != tabSetId) - { - // Other tab sets may not have the same number of tabs - var tabCount = 1; - - while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) - tabCount++; - - tabCount--; - - // If not grouped, skip it - if(tabCount > 1) - SetCurrentLanguage(allTabSetIds[i], language, tabCount); - } - - i++; - } -} - -// Sets the current language in the specified tab set -function SetCurrentLanguage(tabSetId, language, tabCount) -{ - var tabIndex = 1; - - while(tabIndex <= tabCount) - { - var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); - - if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) - break; - - tabIndex++; - } - - if(tabIndex > tabCount) - { - // Select the first non-disabled tab - tabIndex = 1; - - if(document.getElementById(tabSetId + "_tab1").className == "codeSnippetContainerTabPhantom") - { - tabIndex++; - - while(tabIndex <= tabCount) - { - var tab = document.getElementById(tabSetId + "_tab" + tabIndex); - - if(tab.className != "codeSnippetContainerTabPhantom") - { - tab.className = "codeSnippetContainerTabActive"; - document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; - break; - } - - tabIndex++; - } - } - } - - SetActiveTab(tabSetId, tabIndex, tabCount); -} - -// Set the active tab within a tab set -function SetActiveTab(tabSetId, tabIndex, tabCount) -{ - var i = 1; - - while(i <= tabCount) - { - var tabTemp = document.getElementById(tabSetId + "_tab" + i); - - if(tabTemp.className == "codeSnippetContainerTabActive") - tabTemp.className = "codeSnippetContainerTab"; - else - if(tabTemp.className == "codeSnippetContainerTabPhantom") - tabTemp.style.display = "none"; - - var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); - - if(codeTemp.style.display != "none") - codeTemp.style.display = "none"; - - i++; - } - - // Phantom tabs are shown or hidden as needed - if(document.getElementById(tabSetId + "_tab" + tabIndex).className != "codeSnippetContainerTabPhantom") - document.getElementById(tabSetId + "_tab" + tabIndex).className = "codeSnippetContainerTabActive"; - else - document.getElementById(tabSetId + "_tab" + tabIndex).style.display = "block"; - - document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; - - // Show copy code button if not in Chrome - if(navigator.userAgent.toLowerCase().indexOf("chrome") == -1) - document.getElementById(tabSetId + "_copyCode").style.display = "inline"; - else - document.getElementById(tabSetId + "_copyCode").style.display = "none"; -} - -// Copy the code from the active tab of the given tab set to the clipboard -function CopyToClipboard(tabSetId) -{ - var tabTemp, contentId; - var i = 1; - - do - { - contentId = tabSetId + "_code_Div" + i; - tabTemp = document.getElementById(contentId); - - if(tabTemp != null && tabTemp.style.display != "none") - break; - - i++; - - } while(tabTemp != null); - - if(tabTemp == null) - return; - - if(window.clipboardData) - { - try - { - window.clipboardData.setData("Text", document.getElementById(contentId).innerText); - } - catch(e) - { - alert("Permission denied. Enable copying to the clipboard."); - } - } - else if(window.netscape) - { - try - { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( - Components.interfaces.nsIClipboard); - - if(!clip) - return; - - var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( - Components.interfaces.nsITransferable); - - if(!trans) - return; - - trans.addDataFlavor("text/unicode"); - - var str = new Object(); - var len = new Object(); - var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( - Components.interfaces.nsISupportsString); - - var copytext = document.getElementById(contentId).textContent; - - str.data = copytext; - trans.setTransferData("text/unicode", str, copytext.length * 2); - - var clipid = Components.interfaces.nsIClipboard; - - clip.setData(trans, null, clipid.kGlobalClipboard); - } - catch(e) - { - alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); - } - } -} - -// Expand or collapse a section -function SectionExpandCollapse(togglePrefix) -{ - var image = document.getElementById(togglePrefix + "Toggle"); - var section = document.getElementById(togglePrefix + "Section"); - - if(image != null && section != null) - if(section.style.display == "") - { - image.src = image.src.replace("SectionExpanded.png", "SectionCollapsed.png"); - section.style.display = "none"; - } - else - { - image.src = image.src.replace("SectionCollapsed.png", "SectionExpanded.png"); - section.style.display = ""; - } -} - -// Expand or collapse a section when it has the focus and Enter is hit -function SectionExpandCollapse_CheckKey(togglePrefix, eventArgs) -{ - if(eventArgs.keyCode == 13) - SectionExpandCollapse(togglePrefix); -} - -// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" -// defined in the style sheet that implements the user data binary behavior: -// -var Help1Globals = -{ - UserDataCache: function() - { - var userData = document.getElementById("userDataCache"); - - return userData; - }, - - Load: function(key) - { - var userData = this.UserDataCache(); - - userData.load("userDataSettings"); - - var value = userData.getAttribute(key); - - return value; - }, - - Save: function(key, value) - { - var userData = this.UserDataCache(); - userData.setAttribute(key, value); - userData.save("userDataSettings"); - } -}; diff --git a/doc/ref/csharp/html/scripts/jquery-1.11.0.min.js b/doc/ref/csharp/html/scripts/jquery-1.11.0.min.js deleted file mode 100644 index 73f33fb3aa5..00000000000 --- a/doc/ref/csharp/html/scripts/jquery-1.11.0.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f -}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
    a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("