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
- 09:51:04
+ 2015-10-07
+ 13:40:54
- 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 @@
-
-// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
-
-class Ranking
-{
- public $filename;
- public $pageTitle;
- public $rank;
-
- function __construct($file, $title, $rank)
- {
- $this->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 .= "$t ";
- }
-
- $sb .= " Omitted $c more results
";
- }
-
- return $sb;
-}
-
-function cmprank($x, $y)
-{
- return $y->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 @@
-
-// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
-
-include("SearchHelp.inc.php");
-
- $sortByTitle = false;
-
- // The keywords for which to search should be passed in the query string
- $searchText = $_GET["Keywords"];
-
- if(empty($searchText))
- {
- ?>
- Nothing found
-
- return;
- }
-
- // An optional SortByTitle option can also be specified
- if($_GET["SortByTitle"] == "true")
- $sortByTitle = true;
-
- $keywords = ParseKeywords($searchText);
- $letters = array();
- $wordDictionary = array();
-
- // Load the file index
- $json = file_get_contents("fti/FTI_Files.json");
- $fileList = json_decode($json);
-
- // Load the required word index files
- foreach($keywords as $word)
- {
- $letter = substr($word, 0, 1);
-
- if(!in_array($letter, $letters))
- {
- array_push($letters, $letter);
- $ascii = ord($letter);
- $ftiFile = "fti/FTI_$ascii.json";
-
- if(file_exists($ftiFile))
- {
- $json = file_get_contents($ftiFile);
- $ftiWords = json_decode($json, true);
-
- foreach($ftiWords as $ftiWord => $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 The RpcException type exposes the following members.
Events
-
- Name Description SerializeObjectState 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 ChannelOptions Census Field
Enable census for tracing and stats collection
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string Census Public Const Census As String public :
-literal String ^ Census static val mutable Census : string 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 ChannelOptions DefaultAuthority Field
Default authority for calls.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string DefaultAuthority Public Const DefaultAuthority As String public :
-literal String ^ DefaultAuthority static val mutable DefaultAuthority : string 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 ChannelOptions Http2InitialSequenceNumber Field
Initial sequence number for http2 transports
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string Http2InitialSequenceNumber Public Const Http2InitialSequenceNumber As String public :
-literal String ^ Http2InitialSequenceNumber static val mutable Http2InitialSequenceNumber : string 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 ChannelOptions MaxConcurrentStreams 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
Syntaxpublic const string MaxConcurrentStreams Public Const MaxConcurrentStreams As String public :
-literal String ^ MaxConcurrentStreams static val mutable MaxConcurrentStreams : string 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 ChannelOptions MaxMessageLength Field
Maximum message length that the channel can receive
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string MaxMessageLength Public Const MaxMessageLength As String public :
-literal String ^ MaxMessageLength static val mutable MaxMessageLength : string 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 ChannelOptions PrimaryUserAgentString 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
Syntaxpublic const string PrimaryUserAgentString Public Const PrimaryUserAgentString As String public :
-literal String ^ PrimaryUserAgentString static val mutable PrimaryUserAgentString : string 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 ChannelOptions SecondaryUserAgentString 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
Syntaxpublic const string SecondaryUserAgentString Public Const SecondaryUserAgentString As String public :
-literal String ^ SecondaryUserAgentString static val mutable SecondaryUserAgentString : string 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 ChannelOptions SslTargetNameOverride 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
Syntaxpublic const string SslTargetNameOverride Public Const SslTargetNameOverride As String public :
-literal String ^ SslTargetNameOverride static val mutable SslTargetNameOverride : string 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 ContextPropagationOptions Default 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
Syntaxpublic static readonly ContextPropagationOptions Default Public Shared ReadOnly Default As ContextPropagationOptions public :
-static initonly ContextPropagationOptions ^ Default static val Default : ContextPropagationOptions 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 Metadata BinaryHeaderSuffix Field
- All binary headers should have this suffix.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string BinaryHeaderSuffix Public Const BinaryHeaderSuffix As String public :
-literal String ^ BinaryHeaderSuffix static val mutable BinaryHeaderSuffix : string 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
- An read-only instance of metadata containing no entries.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static readonly Metadata Empty Public Shared ReadOnly Empty As Metadata public :
-static initonly Metadata ^ Empty static val Empty : Metadata 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 ServerPort PickUnused 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
Syntaxpublic const int PickUnused Public Const PickUnused As Integer public :
-literal int PickUnused static val mutable PickUnused : int 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 Status DefaultCancelled 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
Syntaxpublic static readonly Status DefaultCancelled Public Shared ReadOnly DefaultCancelled As Status public :
-static initonly Status DefaultCancelled static val DefaultCancelled : Status 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 Status DefaultSuccess 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
Syntaxpublic static readonly Status DefaultSuccess Public Shared ReadOnly DefaultSuccess As Status public :
-static initonly Status DefaultSuccess static val DefaultSuccess : Status 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 VersionInfo CurrentVersion Field
- Current version of gRPC C#
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic const string CurrentVersion Public Const CurrentVersion As String public :
-literal String ^ CurrentVersion static val mutable CurrentVersion : string 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 WriteOptions Default Field
- Default write options.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static readonly WriteOptions Default Public Shared ReadOnly Default As WriteOptions public :
-static initonly WriteOptions ^ Default static val Default : WriteOptions 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 The ChannelOptions type exposes the following members.
Fields 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
\ 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 The Metadata type exposes the following members.
Fields 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 The ServerPort type exposes the following members.
Fields
-
- Name Description PickUnused
- 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 The Status type exposes the following members.
Fields 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 The VersionInfo type exposes the following members.
Fields 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
\ 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 AuthInterceptors FromAccessToken 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
Syntaxpublic static HeaderInterceptor FromAccessToken (
- string accessToken
-)Public Shared Function FromAccessToken (
- accessToken As String
-) As HeaderInterceptor public :
-static HeaderInterceptor ^ FromAccessToken (
- String ^ accessToken
-)static member FromAccessToken :
- accessToken : string -> HeaderInterceptor
-Parameters accessToken Type: System String 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 AuthInterceptors FromCredential 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
Syntaxpublic static HeaderInterceptor FromCredential (
- ITokenAccess credential
-)Public Shared Function FromCredential (
- credential As ITokenAccess
-) As HeaderInterceptor public :
-static HeaderInterceptor ^ FromCredential (
- ITokenAccess ^ credential
-)static member FromCredential :
- credential : ITokenAccess -> HeaderInterceptor
-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 , TResponse Dispose 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
Syntaxpublic :
-virtual void Dispose () sealed abstract Dispose : unit -> unit
-override Dispose : unit -> unit Implements IDisposable Dispose 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 , TResponse GetAwaiter Method
- Allows awaiting this object directly.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic TaskAwaiter <TResponse> GetAwaiter ()Public Function GetAwaiter As TaskAwaiter (Of TResponse)public :
-TaskAwaiter <TResponse> GetAwaiter ()member GetAwaiter : unit -> TaskAwaiter <'TResponse>
-Return Value Type:
TaskAwaiter TResponse 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 , TResponse GetStatus 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
Syntaxpublic Status GetStatus ()Public Function GetStatus As Status public :
-Status GetStatus ()member GetStatus : unit -> Status
-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 , TResponse GetTrailers 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
Syntaxpublic Metadata GetTrailers ()Public Function GetTrailers As Metadata public :
-Metadata ^ GetTrailers ()member GetTrailers : unit -> Metadata
-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 , TResponse Dispose 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
Syntaxpublic :
-virtual void Dispose () sealed abstract Dispose : unit -> unit
-override Dispose : unit -> unit Implements IDisposable Dispose 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 , TResponse GetStatus 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
Syntaxpublic Status GetStatus ()Public Function GetStatus As Status public :
-Status GetStatus ()member GetStatus : unit -> Status
-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 , TResponse GetTrailers 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
Syntaxpublic Metadata GetTrailers ()Public Function GetTrailers As Metadata public :
-Metadata ^ GetTrailers ()member GetTrailers : unit -> Metadata
-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 AsyncServerStreamingCallTResponse Dispose 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
Syntaxpublic :
-virtual void Dispose () sealed abstract Dispose : unit -> unit
-override Dispose : unit -> unit Implements IDisposable Dispose 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 AsyncServerStreamingCallTResponse GetStatus 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
Syntaxpublic Status GetStatus ()Public Function GetStatus As Status public :
-Status GetStatus ()member GetStatus : unit -> Status
-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 AsyncServerStreamingCallTResponse GetTrailers 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
Syntaxpublic Metadata GetTrailers ()Public Function GetTrailers As Metadata public :
-Metadata ^ GetTrailers ()member GetTrailers : unit -> Metadata
-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 AsyncUnaryCallTResponse Dispose 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
Syntaxpublic :
-virtual void Dispose () sealed abstract Dispose : unit -> unit
-override Dispose : unit -> unit Implements IDisposable Dispose 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 AsyncUnaryCallTResponse GetAwaiter Method
- Allows awaiting this object directly.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic TaskAwaiter <TResponse> GetAwaiter ()Public Function GetAwaiter As TaskAwaiter (Of TResponse)public :
-TaskAwaiter <TResponse> GetAwaiter ()member GetAwaiter : unit -> TaskAwaiter <'TResponse>
-Return Value Type:
TaskAwaiter TResponse 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 AsyncUnaryCallTResponse GetStatus 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
Syntaxpublic Status GetStatus ()Public Function GetStatus As Status public :
-Status GetStatus ()member GetStatus : unit -> Status
-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 AsyncUnaryCallTResponse GetTrailers 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
Syntaxpublic Metadata GetTrailers ()Public Function GetTrailers As Metadata public :
-Metadata ^ GetTrailers ()member GetTrailers : unit -> Metadata
-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 , TResponse WithOptions Method
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic CallInvocationDetails <TRequest, TResponse> WithOptions (
- CallOptions options
-)Public Function WithOptions (
- options As CallOptions
-) As CallInvocationDetails (Of TRequest, TResponse)public :
-CallInvocationDetails <TRequest, TResponse> WithOptions (
- CallOptions options
-)member WithOptions :
- options : CallOptions -> CallInvocationDetails <'TRequest, 'TResponse>
-Parameters options Type: Grpc.Core CallOptions [Missing <param name="options"/> documentation for "M:Grpc.Core.CallInvocationDetails`2.WithOptions(Grpc.Core.CallOptions)"]
Return Value Type:
CallInvocationDetails TRequest ,
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
Syntaxpublic CallInvocationDetails (
- Channel channel ,
- Method <TRequest, TResponse> method ,
- CallOptions options
-)Public Sub New (
- channel As Channel ,
- method As Method (Of TRequest, TResponse),
- options As CallOptions
-)public :
-CallInvocationDetails (
- Channel ^ channel ,
- Method <TRequest, TResponse>^ method ,
- CallOptions options
-)new :
- channel : Channel *
- method : Method <'TRequest, 'TResponse> *
- options : CallOptions -> CallInvocationDetails Parameters channel Type: Grpc.Core Channel Channel to use for this call. method Type: Grpc.Core Method TRequest , TResponse Method to call. options Type: Grpc.Core CallOptions 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
Syntaxpublic CallInvocationDetails (
- Channel channel ,
- Method <TRequest, TResponse> method ,
- string host ,
- CallOptions options
-)Public Sub New (
- channel As Channel ,
- method As Method (Of TRequest, TResponse),
- host As String ,
- options As CallOptions
-)public :
-CallInvocationDetails (
- Channel ^ channel ,
- Method <TRequest, TResponse>^ method ,
- String ^ host ,
- CallOptions options
-)new :
- channel : Channel *
- method : Method <'TRequest, 'TResponse> *
- host : string *
- options : CallOptions -> CallInvocationDetails Parameters channel Type: Grpc.Core Channel Channel to use for this call. method Type: Grpc.Core Method TRequest , TResponse Method to call. host Type: System String Host that contains the method. if null , default host will be used. options Type: Grpc.Core CallOptions 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
Syntaxpublic CallInvocationDetails (
- Channel channel ,
- string method ,
- string host ,
- Marshaller <TRequest> requestMarshaller ,
- Marshaller <TResponse> responseMarshaller ,
- CallOptions options
-)Public Sub New (
- channel As Channel ,
- method As String ,
- host As String ,
- requestMarshaller As Marshaller (Of TRequest),
- responseMarshaller As Marshaller (Of TResponse),
- options As CallOptions
-)public :
-CallInvocationDetails (
- Channel ^ channel ,
- String ^ method ,
- String ^ host ,
- Marshaller <TRequest>^ requestMarshaller ,
- Marshaller <TResponse>^ responseMarshaller ,
- CallOptions options
-)new :
- channel : Channel *
- method : string *
- host : string *
- requestMarshaller : Marshaller <'TRequest> *
- responseMarshaller : Marshaller <'TResponse> *
- options : CallOptions -> CallInvocationDetails Parameters channel Type: Grpc.Core Channel Channel to use for this call. method Type: System String Qualified method name. host Type: System String Host that contains the method. requestMarshaller Type: Grpc.Core Marshaller TRequest Request marshaller. responseMarshaller Type: Grpc.Core Marshaller TResponse Response marshaller. options Type: Grpc.Core CallOptions 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 CallOptions WithCancellationToken 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
Syntaxpublic CallOptions WithCancellationToken (
- CancellationToken cancellationToken
-)Public Function WithCancellationToken (
- cancellationToken As CancellationToken
-) As CallOptions public :
-CallOptions WithCancellationToken (
- CancellationToken cancellationToken
-)member WithCancellationToken :
- cancellationToken : CancellationToken -> CallOptions
-Parameters cancellationToken Type: System.Threading CancellationToken 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 CallOptions WithDeadline 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
Syntaxpublic CallOptions WithDeadline (
- DateTime deadline
-)Public Function WithDeadline (
- deadline As DateTime
-) As CallOptions public :
-CallOptions WithDeadline (
- DateTime deadline
-)member WithDeadline :
- deadline : DateTime -> CallOptions
-Parameters deadline Type: System DateTime 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 CallOptions WithHeaders 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
Syntaxpublic CallOptions WithHeaders (
- Metadata headers
-)Public Function WithHeaders (
- headers As Metadata
-) As CallOptions public :
-CallOptions WithHeaders (
- Metadata ^ headers
-)member WithHeaders :
- headers : Metadata -> CallOptions
-Parameters headers Type: Grpc.Core Metadata 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
- Creates a new instance of CallOptions struct.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic CallOptions (
- Metadata headers = null ,
- Nullable <DateTime > deadline = null ,
- CancellationToken cancellationToken = null ,
- WriteOptions writeOptions = null ,
- ContextPropagationToken propagationToken = null
-)Public Sub New (
- Optional headers As Metadata = Nothing ,
- Optional deadline As Nullable (Of DateTime ) = Nothing ,
- Optional cancellationToken As CancellationToken = Nothing ,
- Optional writeOptions As WriteOptions = Nothing ,
- Optional propagationToken As ContextPropagationToken = Nothing
-)public :
-CallOptions (
- Metadata ^ headers = nullptr ,
- Nullable <DateTime > deadline = nullptr ,
- CancellationToken cancellationToken = nullptr ,
- WriteOptions ^ writeOptions = nullptr ,
- ContextPropagationToken ^ propagationToken = nullptr
-)new :
- ?headers : Metadata *
- ?deadline : Nullable <DateTime > *
- ?cancellationToken : CancellationToken *
- ?writeOptions : WriteOptions *
- ?propagationToken : ContextPropagationToken
-(* Defaults:
- let _ headers = defaultArg headers null
- let _ deadline = defaultArg deadline null
- let _ cancellationToken = defaultArg cancellationToken null
- let _ writeOptions = defaultArg writeOptions null
- let _ propagationToken = defaultArg propagationToken null
-*)
--> CallOptions Parameters headers (Optional)Type: Grpc.Core Metadata Headers to be sent with the call. deadline (Optional)Type: System Nullable DateTime Deadline for the call to finish. null means no deadline. cancellationToken (Optional)Type: System.Threading CancellationToken Can be used to request cancellation of the call. writeOptions (Optional)Type: Grpc.Core WriteOptions Write options that will be used for this call. propagationToken (Optional)Type: Grpc.Core ContextPropagationToken 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 Calls AsyncClientStreamingCallTRequest , 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
Syntaxpublic static AsyncClientStreamingCall <TRequest, TResponse> AsyncClientStreamingCall <TRequest, TResponse>(
- CallInvocationDetails <TRequest, TResponse> call
-)
-where TRequest : class
-where TResponse : class
-Public Shared Function AsyncClientStreamingCall (Of TRequest As Class , TResponse As Class ) (
- call As CallInvocationDetails (Of TRequest, TResponse)
-) As AsyncClientStreamingCall (Of TRequest, TResponse)public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-static AsyncClientStreamingCall <TRequest, TResponse>^ AsyncClientStreamingCall (
- CallInvocationDetails <TRequest, TResponse> call
-)static member AsyncClientStreamingCall :
- call : CallInvocationDetails <'TRequest, 'TResponse> -> AsyncClientStreamingCall <'TRequest, 'TResponse> when 'TRequest : not struct when 'TResponse : not struct
-Parameters call Type: Grpc.Core CallInvocationDetails TRequest , TResponse The call defintion. Type Parameters TRequest Type of request messages. TResponse The of response message. Return Value Type:
AsyncClientStreamingCall TRequest ,
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 Calls AsyncDuplexStreamingCallTRequest , 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
Syntaxpublic static AsyncDuplexStreamingCall <TRequest, TResponse> AsyncDuplexStreamingCall <TRequest, TResponse>(
- CallInvocationDetails <TRequest, TResponse> call
-)
-where TRequest : class
-where TResponse : class
-Public Shared Function AsyncDuplexStreamingCall (Of TRequest As Class , TResponse As Class ) (
- call As CallInvocationDetails (Of TRequest, TResponse)
-) As AsyncDuplexStreamingCall (Of TRequest, TResponse)public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-static AsyncDuplexStreamingCall <TRequest, TResponse>^ AsyncDuplexStreamingCall (
- CallInvocationDetails <TRequest, TResponse> call
-)static member AsyncDuplexStreamingCall :
- call : CallInvocationDetails <'TRequest, 'TResponse> -> AsyncDuplexStreamingCall <'TRequest, 'TResponse> when 'TRequest : not struct when 'TResponse : not struct
-Parameters call Type: Grpc.Core CallInvocationDetails TRequest , TResponse The call definition. Type Parameters TRequest Type of request messages. TResponse Type of reponse messages. Return Value Type:
AsyncDuplexStreamingCall TRequest ,
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 Calls AsyncServerStreamingCallTRequest , 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
Syntaxpublic static AsyncServerStreamingCall <TResponse> AsyncServerStreamingCall <TRequest, TResponse>(
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)
-where TRequest : class
-where TResponse : class
-Public Shared Function AsyncServerStreamingCall (Of TRequest As Class , TResponse As Class ) (
- call As CallInvocationDetails (Of TRequest, TResponse),
- req As TRequest
-) As AsyncServerStreamingCall (Of TResponse)public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-static AsyncServerStreamingCall <TResponse>^ AsyncServerStreamingCall (
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)static member AsyncServerStreamingCall :
- call : CallInvocationDetails <'TRequest, 'TResponse> *
- req : 'TRequest -> AsyncServerStreamingCall <'TResponse> when 'TRequest : not struct when 'TResponse : not struct
-Parameters call Type: Grpc.Core CallInvocationDetails TRequest , TResponse The call defintion. req Type: TRequest Request message. Type Parameters TRequest Type of request message. TResponse The of response messages. Return Value Type:
AsyncServerStreamingCall TResponse 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 Calls AsyncUnaryCallTRequest , TResponse Method
- Invokes a simple remote call asynchronously.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static AsyncUnaryCall <TResponse> AsyncUnaryCall <TRequest, TResponse>(
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)
-where TRequest : class
-where TResponse : class
-Public Shared Function AsyncUnaryCall (Of TRequest As Class , TResponse As Class ) (
- call As CallInvocationDetails (Of TRequest, TResponse),
- req As TRequest
-) As AsyncUnaryCall (Of TResponse)public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-static AsyncUnaryCall <TResponse>^ AsyncUnaryCall (
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)static member AsyncUnaryCall :
- call : CallInvocationDetails <'TRequest, 'TResponse> *
- req : 'TRequest -> AsyncUnaryCall <'TResponse> when 'TRequest : not struct when 'TResponse : not struct
-Parameters call Type: Grpc.Core CallInvocationDetails TRequest , TResponse The call defintion. req Type: TRequest Request message. Type Parameters TRequest Type of request message. TResponse The of response message. Return Value Type:
AsyncUnaryCall 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_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 Calls BlockingUnaryCallTRequest , 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
Syntaxpublic static TResponse BlockingUnaryCall <TRequest, TResponse>(
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)
-where TRequest : class
-where TResponse : class
-Public Shared Function BlockingUnaryCall (Of TRequest As Class , TResponse As Class ) (
- call As CallInvocationDetails (Of TRequest, TResponse),
- req As TRequest
-) As TResponsepublic :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-static TResponse BlockingUnaryCall (
- CallInvocationDetails <TRequest, TResponse> call ,
- TRequest req
-)static member BlockingUnaryCall :
- call : CallInvocationDetails <'TRequest, 'TResponse> *
- req : 'TRequest -> 'TResponse when 'TRequest : not struct when 'TResponse : not struct
-Parameters call Type: Grpc.Core CallInvocationDetails TRequest , 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
Syntaxpublic ChannelOption (
- string name ,
- int intValue
-)Public Sub New (
- name As String ,
- intValue As Integer
-)public :
-ChannelOption (
- String ^ name ,
- int intValue
-)new :
- name : string *
- intValue : int -> ChannelOption Parameters name Type: System String Name. intValue Type: System Int32 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
Syntaxpublic ChannelOption (
- string name ,
- string stringValue
-)Public Sub New (
- name As String ,
- stringValue As String
-)public :
-ChannelOption (
- String ^ name ,
- String ^ stringValue
-)new :
- name : string *
- stringValue : string -> ChannelOption Parameters name Type: System String Name. stringValue Type: System String 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 Channel ConnectAsync 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
Syntaxpublic Task ConnectAsync (
- Nullable <DateTime > deadline = null
-)Public Function ConnectAsync (
- Optional deadline As Nullable (Of DateTime ) = Nothing
-) As Task public :
-Task ^ ConnectAsync (
- Nullable <DateTime > deadline = nullptr
-)member ConnectAsync :
- ?deadline : Nullable <DateTime >
-(* Defaults:
- let _ deadline = defaultArg deadline null
-*)
--> Task
-Parameters deadline (Optional)Type: System Nullable DateTime 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 Channel ShutdownAsync 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
Syntaxpublic Task ShutdownAsync ()Public Function ShutdownAsync As Task public :
-Task ^ ShutdownAsync ()member ShutdownAsync : unit -> Task
-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 Channel WaitForStateChangedAsync 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
Syntaxpublic Task WaitForStateChangedAsync (
- ChannelState lastObservedState ,
- Nullable <DateTime > deadline = null
-)Public Function WaitForStateChangedAsync (
- lastObservedState As ChannelState ,
- Optional deadline As Nullable (Of DateTime ) = Nothing
-) As Task public :
-Task ^ WaitForStateChangedAsync (
- ChannelState lastObservedState ,
- Nullable <DateTime > deadline = nullptr
-)member WaitForStateChangedAsync :
- lastObservedState : ChannelState *
- ?deadline : Nullable <DateTime >
-(* Defaults:
- let _ deadline = defaultArg deadline null
-*)
--> Task
-Parameters lastObservedState Type: Grpc.Core ChannelState [Missing <param name="lastObservedState"/> documentation for "M:Grpc.Core.Channel.WaitForStateChangedAsync(Grpc.Core.ChannelState,System.Nullable{System.DateTime})"]
deadline (Optional)Type: System Nullable DateTime [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, IEnumerable ChannelOption )
- 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
Syntaxpublic Channel (
- string target ,
- Credentials credentials ,
- IEnumerable <ChannelOption > options = null
-)Public Sub New (
- target As String ,
- credentials As Credentials ,
- Optional options As IEnumerable (Of ChannelOption ) = Nothing
-)public :
-Channel (
- String ^ target ,
- Credentials ^ credentials ,
- IEnumerable <ChannelOption ^>^ options = nullptr
-)new :
- target : string *
- credentials : Credentials *
- ?options : IEnumerable <ChannelOption >
-(* Defaults:
- let _ options = defaultArg options null
-*)
--> Channel Parameters target Type: System String Target of the channel. credentials Type: Grpc.Core Credentials Credentials to secure the channel. options (Optional)Type: System.Collections.Generic IEnumerable ChannelOption 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, IEnumerable ChannelOption )
- 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
Syntaxpublic Channel (
- string host ,
- int port ,
- Credentials credentials ,
- IEnumerable <ChannelOption > options = null
-)Public Sub New (
- host As String ,
- port As Integer ,
- credentials As Credentials ,
- Optional options As IEnumerable (Of ChannelOption ) = Nothing
-)public :
-Channel (
- String ^ host ,
- int port ,
- Credentials ^ credentials ,
- IEnumerable <ChannelOption ^>^ options = nullptr
-)new :
- host : string *
- port : int *
- credentials : Credentials *
- ?options : IEnumerable <ChannelOption >
-(* Defaults:
- let _ options = defaultArg options null
-*)
--> Channel Parameters host Type: System String The name or IP address of the host. port Type: System Int32 The port. credentials Type: Grpc.Core Credentials Credentials to secure the channel. options (Optional)Type: System.Collections.Generic IEnumerable ChannelOption 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 ClientBase CreateCallTRequest , TResponse Method
- Creates a new call to given method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxprotected CallInvocationDetails <TRequest, TResponse> CreateCall <TRequest, TResponse>(
- Method <TRequest, TResponse> method ,
- CallOptions options
-)
-where TRequest : class
-where TResponse : class
-Protected Function CreateCall (Of TRequest As Class , TResponse As Class ) (
- method As Method (Of TRequest, TResponse),
- options As CallOptions
-) As CallInvocationDetails (Of TRequest, TResponse)protected :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-CallInvocationDetails <TRequest, TResponse> CreateCall (
- Method <TRequest, TResponse>^ method ,
- CallOptions options
-)member CreateCall :
- method : Method <'TRequest, 'TResponse> *
- options : CallOptions -> CallInvocationDetails <'TRequest, 'TResponse> when 'TRequest : not struct when 'TResponse : not struct
-Parameters method Type: Grpc.Core Method TRequest , TResponse The method to invoke. options Type: Grpc.Core CallOptions The call options. Type Parameters TRequest Request message type. TResponse Response message type. Return Value Type:
CallInvocationDetails TRequest ,
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
- Initializes a new instance of ClientBase class.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ClientBase (
- Channel channel
-)Public Sub New (
- channel As Channel
-)public :
-ClientBase (
- Channel ^ channel
-)new :
- channel : Channel -> ClientBase Parameters channel Type: Grpc.Core Channel 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
Syntaxpublic ContextPropagationOptions (
- bool propagateDeadline = true ,
- bool propagateCancellation = true
-)Public Sub New (
- Optional propagateDeadline As Boolean = true ,
- Optional propagateCancellation As Boolean = true
-)public :
-ContextPropagationOptions (
- bool propagateDeadline = true ,
- bool propagateCancellation = true
-)new :
- ?propagateDeadline : bool *
- ?propagateCancellation : bool
-(* Defaults:
- let _ propagateDeadline = defaultArg propagateDeadline true
- let _ propagateCancellation = defaultArg propagateCancellation true
-*)
--> ContextPropagationOptions Parameters propagateDeadline (Optional)Type: System Boolean If set to true parent call's deadline will be propagated to the child call. propagateCancellation (Optional)Type: System Boolean 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxprotected :
-Credentials ()new : unit -> 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 GrpcEnvironment SetLogger 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
Syntaxpublic static void SetLogger (
- ILogger customLogger
-)Public Shared Sub SetLogger (
- customLogger As ILogger
-)public :
-static void SetLogger (
- ILogger ^ customLogger
-)static member SetLogger :
- customLogger : ILogger -> unit
-Parameters customLogger Type: Grpc.Core.Logging ILogger [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 IAsyncStreamWriterT WriteAsync 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
SyntaxTask WriteAsync (
- T message
-)Function WriteAsync (
- message As T
-) As Task Task ^ WriteAsync (
- T message
-)abstract WriteAsync :
- message : 'T -> Task
-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 IClientStreamWriterT CompleteAsync 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
SyntaxFunction CompleteAsync As Task abstract CompleteAsync : unit -> Task
-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
Syntaxpublic KeyCertificatePair (
- string certificateChain ,
- string privateKey
-)Public Sub New (
- certificateChain As String ,
- privateKey As String
-)public :
-KeyCertificatePair (
- String ^ certificateChain ,
- String ^ privateKey
-)new :
- certificateChain : string *
- privateKey : string -> KeyCertificatePair Parameters certificateChain Type: System String PEM encoded certificate chain. privateKey Type: System String 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 ConsoleLogger Debug Method
Logs a message with severity Debug.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic void Debug (
- string message ,
- params Object [] formatArgs
-)Public Sub Debug (
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Debug (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Debug :
- message : string *
- formatArgs : Object [] -> unit
-override Debug :
- message : string *
- formatArgs : Object [] -> unit Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Debug(System.String,System.Object[])"]
Implements ILogger Debug(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[]) ConsoleLogger Error 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
Syntaxpublic void Error (
- Exception exception ,
- string message ,
- params Object [] formatArgs
-)Public Sub Error (
- exception As Exception ,
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Error (
- Exception ^ exception ,
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Error :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit
-override Error :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit Parameters exception Type: System Exception [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]
message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.Exception,System.String,System.Object[])"]
Implements ILogger Error(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[]) ConsoleLogger Error 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
Syntaxpublic void Error (
- string message ,
- params Object [] formatArgs
-)Public Sub Error (
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Error (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Error :
- message : string *
- formatArgs : Object [] -> unit
-override Error :
- message : string *
- formatArgs : Object [] -> unit Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Error(System.String,System.Object[])"]
Implements ILogger Error(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 ConsoleLogger ForTypeT 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
Syntaxpublic ILogger ForType <T>()
-Public Function ForType (Of T) As ILogger public :
-generic <typename T>
-virtual ILogger ^ ForType () sealed abstract ForType : unit -> ILogger
-override ForType : unit -> ILogger Type Parameters T [Missing <typeparam name="T"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.ForType``1"]
Return Value Type:
ILogger Implements ILogger ForType T 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 Logs a message with severity Info.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic void Info (
- string message ,
- params Object [] formatArgs
-)Public Sub Info (
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Info (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Info :
- message : string *
- formatArgs : Object [] -> unit
-override Info :
- message : string *
- formatArgs : Object [] -> unit Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Info(System.String,System.Object[])"]
Implements ILogger Info(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[]) ConsoleLogger Warning 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
Syntaxpublic void Warning (
- Exception exception ,
- string message ,
- params Object [] formatArgs
-)Public Sub Warning (
- exception As Exception ,
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Warning (
- Exception ^ exception ,
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Warning :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit
-override Warning :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit Parameters exception Type: System Exception [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]
message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.Exception,System.String,System.Object[])"]
Implements ILogger Warning(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[]) ConsoleLogger Warning 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
Syntaxpublic void Warning (
- string message ,
- params Object [] formatArgs
-)Public Sub Warning (
- message As String ,
- ParamArray formatArgs As Object ()
-)public :
-virtual void Warning (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-) sealed abstract Warning :
- message : string *
- formatArgs : Object [] -> unit
-override Warning :
- message : string *
- formatArgs : Object [] -> unit Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]
formatArgs Type: System Object [Missing <param name="formatArgs"/> documentation for "M:Grpc.Core.Logging.ConsoleLogger.Warning(System.String,System.Object[])"]
Implements ILogger Warning(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
Syntaxnew : unit -> 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 Logs a message with severity Debug.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxvoid Debug (
- string message ,
- params Object [] formatArgs
-)Sub Debug (
- message As String ,
- ParamArray formatArgs As Object ()
-)void Debug (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Debug :
- message : string *
- formatArgs : Object [] -> unit
-Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Debug(System.String,System.Object[])"]
formatArgs Type: System Object [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[]) ILogger Error 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
Syntaxvoid Error (
- Exception exception ,
- string message ,
- params Object [] formatArgs
-)Sub Error (
- exception As Exception ,
- message As String ,
- ParamArray formatArgs As Object ()
-)void Error (
- Exception ^ exception ,
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Error :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit
-Parameters exception Type: System Exception [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]
message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.Exception,System.String,System.Object[])"]
formatArgs Type: System Object [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[]) ILogger Error 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
Syntaxvoid Error (
- string message ,
- params Object [] formatArgs
-)Sub Error (
- message As String ,
- ParamArray formatArgs As Object ()
-)void Error (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Error :
- message : string *
- formatArgs : Object [] -> unit
-Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Error(System.String,System.Object[])"]
formatArgs Type: System Object [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 Returns a logger associated with the specified type.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxFunction ForType (Of T) As ILogger generic <typename T>
-ILogger ^ ForType ()abstract ForType : unit -> ILogger
-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 Logs a message with severity Info.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxvoid Info (
- string message ,
- params Object [] formatArgs
-)Sub Info (
- message As String ,
- ParamArray formatArgs As Object ()
-)void Info (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Info :
- message : string *
- formatArgs : Object [] -> unit
-Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Info(System.String,System.Object[])"]
formatArgs Type: System Object [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[]) ILogger Warning 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
Syntaxvoid Warning (
- Exception exception ,
- string message ,
- params Object [] formatArgs
-)Sub Warning (
- exception As Exception ,
- message As String ,
- ParamArray formatArgs As Object ()
-)void Warning (
- Exception ^ exception ,
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Warning :
- exception : Exception *
- message : string *
- formatArgs : Object [] -> unit
-Parameters exception Type: System Exception [Missing <param name="exception"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]
message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.Exception,System.String,System.Object[])"]
formatArgs Type: System Object [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[]) ILogger Warning 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
Syntaxvoid Warning (
- string message ,
- params Object [] formatArgs
-)Sub Warning (
- message As String ,
- ParamArray formatArgs As Object ()
-)void Warning (
- String ^ message ,
- ... array <Object ^>^ formatArgs
-)abstract Warning :
- message : string *
- formatArgs : Object [] -> unit
-Parameters message Type: System String [Missing <param name="message"/> documentation for "M:Grpc.Core.Logging.ILogger.Warning(System.String,System.Object[])"]
formatArgs Type: System Object [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
- Initializes a new marshaller.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Marshaller (
- Func <T, byte []> serializer ,
- Func <byte [], T> deserializer
-)Public Sub New (
- serializer As Func (Of T, Byte ()),
- deserializer As Func (Of Byte (), T)
-)public :
-Marshaller (
- Func <T, array <unsigned char >^>^ serializer ,
- Func <array <unsigned char >^, T>^ deserializer
-)new :
- serializer : Func <'T, byte []> *
- deserializer : Func <byte [], 'T> -> Marshaller Parameters serializer Type: System Func T , Byte Function that will be used to serialize messages. deserializer Type: System Func Byte , 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 Marshallers CreateT Method
- Creates a marshaller from specified serializer and deserializer.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static Marshaller <T> Create <T>(
- Func <T, byte []> serializer ,
- Func <byte [], T> deserializer
-)
-Public Shared Function Create (Of T) (
- serializer As Func (Of T, Byte ()),
- deserializer As Func (Of Byte (), T)
-) As Marshaller (Of T)public :
-generic <typename T>
-static Marshaller <T>^ Create (
- Func <T, array <unsigned char >^>^ serializer ,
- Func <array <unsigned char >^, T>^ deserializer
-)static member Create :
- serializer : Func <'T, byte []> *
- deserializer : Func <byte [], 'T> -> Marshaller <'T>
-Parameters serializer Type: System Func T , 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: System Func Byte , 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:
Marshaller T 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) Metadata Add Method (Metadata Entry)
[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
Syntaxpublic void Add (
- Metadata Entry item
-)Public Sub Add (
- item As Metadata Entry
-)public :
-virtual void Add (
- Metadata Entry item
-) sealed abstract Add :
- item : Metadata Entry -> unit
-override Add :
- item : Metadata Entry -> unit Parameters item Type: Grpc.Core Metadata Entry [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Add(Grpc.Core.Metadata.Entry)"]
Implements ICollection T Add(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[]) Metadata Add 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
Syntaxpublic void Add (
- string key ,
- byte [] valueBytes
-)Public Sub Add (
- key As String ,
- valueBytes As Byte ()
-)public :
-void Add (
- String ^ key ,
- array <unsigned char >^ valueBytes
-)member Add :
- key : string *
- valueBytes : byte [] -> unit
-Parameters key Type: System String [Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.Byte[])"]
valueBytes Type: System Byte [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) Metadata Add 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
Syntaxpublic void Add (
- string key ,
- string value
-)Public Sub Add (
- key As String ,
- value As String
-)public :
-void Add (
- String ^ key ,
- String ^ value
-)member Add :
- key : string *
- value : string -> unit
-Parameters key Type: System String [Missing <param name="key"/> documentation for "M:Grpc.Core.Metadata.Add(System.String,System.String)"]
value Type: System String [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 [Missing <summary> documentation for "M:Grpc.Core.Metadata.Clear"]
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic :
-virtual void Clear () sealed abstract Clear : unit -> unit
-override Clear : unit -> unit Implements ICollection T Clear 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 [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
Syntaxpublic bool Contains (
- Metadata Entry item
-)Public Function Contains (
- item As Metadata Entry
-) As Boolean public :
-virtual bool Contains (
- Metadata Entry item
-) sealed abstract Contains :
- item : Metadata Entry -> bool
-override Contains :
- item : Metadata Entry -> bool Parameters item Type: Grpc.Core Metadata Entry [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Contains(Grpc.Core.Metadata.Entry)"]
Return Value Type:
Boolean Implements ICollection T Contains(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 [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
Syntaxpublic void CopyTo (
- Metadata Entry [] array ,
- int arrayIndex
-)Public Sub CopyTo (
- array As Metadata Entry (),
- arrayIndex As Integer
-)public :
-virtual void CopyTo (
- array <Metadata Entry >^ array ,
- int arrayIndex
-) sealed abstract CopyTo :
- array : Metadata Entry [] *
- arrayIndex : int -> unit
-override CopyTo :
- array : Metadata Entry [] *
- arrayIndex : int -> unit Parameters array Type: Grpc.Core Metadata Entry [Missing <param name="array"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]
arrayIndex Type: System Int32 [Missing <param name="arrayIndex"/> documentation for "M:Grpc.Core.Metadata.CopyTo(Grpc.Core.Metadata.Entry[],System.Int32)"]
Implements ICollection T CopyTo( 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 Metadata Entry ToString Method
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic override string ToString ()Public Overrides Function ToString As String public :
-virtual String ^ ToString () override abstract ToString : unit -> string
-override ToString : unit -> string 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[]) Metadata Entry Constructor (String, Byte )
- Initializes a new instance of the
Metadata Entry struct with a binary value.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Entry (
- string key ,
- byte [] valueBytes
-)Public Sub New (
- key As String ,
- valueBytes As Byte ()
-)public :
-Entry (
- String ^ key ,
- array <unsigned char >^ valueBytes
-)new :
- key : string *
- valueBytes : byte [] -> Entry Parameters key Type: System String Metadata key, needs to have suffix indicating a binary valued metadata entry. valueBytes Type: System Byte 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) Metadata Entry Constructor (String, String)
- Initializes a new instance of the
Metadata Entry struct holding an ASCII value.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Entry (
- string key ,
- string value
-)Public Sub New (
- key As String ,
- value As String
-)public :
-Entry (
- String ^ key ,
- String ^ value
-)new :
- key : string *
- value : string -> Entry Parameters key Type: System String Metadata key, must not use suffix indicating a binary valued metadata entry. value Type: System String 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 Metadata GetEnumerator 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
Syntaxpublic IEnumerator <Metadata Entry > GetEnumerator ()Public Function GetEnumerator As IEnumerator (Of Metadata Entry )public :
-virtual IEnumerator <Metadata Entry >^ GetEnumerator () sealed abstract GetEnumerator : unit -> IEnumerator <Metadata Entry >
-override GetEnumerator : unit -> IEnumerator <Metadata Entry > Return Value Type:
IEnumerator Metadata Entry Implements IEnumerable T GetEnumerator 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 [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
Syntaxpublic int IndexOf (
- Metadata Entry item
-)Public Function IndexOf (
- item As Metadata Entry
-) As Integer public :
-virtual int IndexOf (
- Metadata Entry item
-) sealed abstract IndexOf :
- item : Metadata Entry -> int
-override IndexOf :
- item : Metadata Entry -> int Parameters item Type: Grpc.Core Metadata Entry [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.IndexOf(Grpc.Core.Metadata.Entry)"]
Return Value Type:
Int32 Implements IList T IndexOf(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 [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
Syntaxpublic void Insert (
- int index ,
- Metadata Entry item
-)Public Sub Insert (
- index As Integer ,
- item As Metadata Entry
-)public :
-virtual void Insert (
- int index ,
- Metadata Entry item
-) sealed abstract Insert :
- index : int *
- item : Metadata Entry -> unit
-override Insert :
- index : int *
- item : Metadata Entry -> unit Parameters index Type: System Int32 [Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]
item Type: Grpc.Core Metadata Entry [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Insert(System.Int32,Grpc.Core.Metadata.Entry)"]
Implements IList T Insert(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 [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
Syntaxpublic bool Remove (
- Metadata Entry item
-)Public Function Remove (
- item As Metadata Entry
-) As Boolean public :
-virtual bool Remove (
- Metadata Entry item
-) sealed abstract Remove :
- item : Metadata Entry -> bool
-override Remove :
- item : Metadata Entry -> bool Parameters item Type: Grpc.Core Metadata Entry [Missing <param name="item"/> documentation for "M:Grpc.Core.Metadata.Remove(Grpc.Core.Metadata.Entry)"]
Return Value Type:
Boolean Implements ICollection T Remove(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 [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
Syntaxpublic void RemoveAt (
- int index
-)Public Sub RemoveAt (
- index As Integer
-)public :
-virtual void RemoveAt (
- int index
-) sealed abstract RemoveAt :
- index : int -> unit
-override RemoveAt :
- index : int -> unit Parameters index Type: System Int32 [Missing <param name="index"/> documentation for "M:Grpc.Core.Metadata.RemoveAt(System.Int32)"]
Implements IList T RemoveAt(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
- Initializes a new instance of Metadata .
-
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_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
Syntaxpublic Method (
- MethodType type ,
- string serviceName ,
- string name ,
- Marshaller <TRequest> requestMarshaller ,
- Marshaller <TResponse> responseMarshaller
-)Public Sub New (
- type As MethodType ,
- serviceName As String ,
- name As String ,
- requestMarshaller As Marshaller (Of TRequest),
- responseMarshaller As Marshaller (Of TResponse)
-)public :
-Method (
- MethodType type ,
- String ^ serviceName ,
- String ^ name ,
- Marshaller <TRequest>^ requestMarshaller ,
- Marshaller <TResponse>^ responseMarshaller
-)new :
- type : MethodType *
- serviceName : string *
- name : string *
- requestMarshaller : Marshaller <'TRequest> *
- responseMarshaller : Marshaller <'TResponse> -> Method Parameters type Type: Grpc.Core MethodType Type of method. serviceName Type: System String Name of service this method belongs to. name Type: System String Unqualified name of the method. requestMarshaller Type: Grpc.Core Marshaller TRequest Marshaller used for request messages. responseMarshaller Type: Grpc.Core Marshaller TResponse 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
Syntaxpublic RpcException (
- Status status
-)Public Sub New (
- status As Status
-)public :
-RpcException (
- Status status
-)new :
- status : Status -> RpcException Parameters status Type: Grpc.Core Status 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
Syntaxpublic RpcException (
- Status status ,
- string message
-)Public Sub New (
- status As Status ,
- message As String
-)public :
-RpcException (
- Status status ,
- String ^ message
-)new :
- status : Status *
- message : string -> RpcException Parameters status Type: Grpc.Core Status Resulting status of a call. message Type: System String 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 ServerCallContext CreatePropagationToken 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
Syntaxpublic ContextPropagationToken CreatePropagationToken (
- ContextPropagationOptions options = null
-)Public Function CreatePropagationToken (
- Optional options As ContextPropagationOptions = Nothing
-) As ContextPropagationToken public :
-ContextPropagationToken ^ CreatePropagationToken (
- ContextPropagationOptions ^ options = nullptr
-)member CreatePropagationToken :
- ?options : ContextPropagationOptions
-(* Defaults:
- let _ options = defaultArg options null
-*)
--> ContextPropagationToken
-Parameters options (Optional)Type: Grpc.Core ContextPropagationOptions [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 ServerCallContext WriteResponseHeadersAsync 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
Syntaxpublic Task WriteResponseHeadersAsync (
- Metadata responseHeaders
-)Public Function WriteResponseHeadersAsync (
- responseHeaders As Metadata
-) As Task public :
-Task ^ WriteResponseHeadersAsync (
- Metadata ^ responseHeaders
-)member WriteResponseHeadersAsync :
- responseHeaders : Metadata -> Task
-Parameters responseHeaders Type: Grpc.Core Metadata 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxprotected ServerCredentials ()protected :
-ServerCredentials ()new : unit -> 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
- Creates a new port on which server should listen.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ServerPort (
- string host ,
- int port ,
- ServerCredentials credentials
-)Public Sub New (
- host As String ,
- port As Integer ,
- credentials As ServerCredentials
-)public :
-ServerPort (
- String ^ host ,
- int port ,
- ServerCredentials ^ credentials
-)new :
- host : string *
- port : int *
- credentials : ServerCredentials -> ServerPort Parameters host Type: System String the host port Type: System Int32 the port. If zero, an unused port is chosen automatically. credentials Type: Grpc.Core ServerCredentials 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)) ServerServiceDefinition Builder AddMethodTRequest , 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
Syntaxpublic ServerServiceDefinition Builder AddMethod <TRequest, TResponse>(
- Method <TRequest, TResponse> method ,
- ClientStreamingServerMethod <TRequest, TResponse> handler
-)
-where TRequest : class
-where TResponse : class
-Public Function AddMethod (Of TRequest As Class , TResponse As Class ) (
- method As Method (Of TRequest, TResponse),
- handler As ClientStreamingServerMethod (Of TRequest, TResponse)
-) As ServerServiceDefinition Builder public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-ServerServiceDefinition Builder ^ AddMethod (
- Method <TRequest, TResponse>^ method ,
- ClientStreamingServerMethod <TRequest, TResponse>^ handler
-)member AddMethod :
- method : Method <'TRequest, 'TResponse> *
- handler : ClientStreamingServerMethod <'TRequest, 'TResponse> -> ServerServiceDefinition Builder when 'TRequest : not struct when 'TResponse : not struct
-Parameters method Type: Grpc.Core Method TRequest , TResponse The method. handler Type: Grpc.Core ClientStreamingServerMethod TRequest , TResponse The method handler. Type Parameters TRequest The request message class. TResponse The response message class. Return Value Type:
ServerServiceDefinition Builder 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)) ServerServiceDefinition Builder AddMethodTRequest , 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
Syntaxpublic ServerServiceDefinition Builder AddMethod <TRequest, TResponse>(
- Method <TRequest, TResponse> method ,
- DuplexStreamingServerMethod <TRequest, TResponse> handler
-)
-where TRequest : class
-where TResponse : class
-Public Function AddMethod (Of TRequest As Class , TResponse As Class ) (
- method As Method (Of TRequest, TResponse),
- handler As DuplexStreamingServerMethod (Of TRequest, TResponse)
-) As ServerServiceDefinition Builder public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-ServerServiceDefinition Builder ^ AddMethod (
- Method <TRequest, TResponse>^ method ,
- DuplexStreamingServerMethod <TRequest, TResponse>^ handler
-)member AddMethod :
- method : Method <'TRequest, 'TResponse> *
- handler : DuplexStreamingServerMethod <'TRequest, 'TResponse> -> ServerServiceDefinition Builder when 'TRequest : not struct when 'TResponse : not struct
-Parameters method Type: Grpc.Core Method TRequest , TResponse The method. handler Type: Grpc.Core DuplexStreamingServerMethod TRequest , TResponse The method handler. Type Parameters TRequest The request message class. TResponse The response message class. Return Value Type:
ServerServiceDefinition Builder 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)) ServerServiceDefinition Builder AddMethodTRequest , 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
Syntaxpublic ServerServiceDefinition Builder AddMethod <TRequest, TResponse>(
- Method <TRequest, TResponse> method ,
- ServerStreamingServerMethod <TRequest, TResponse> handler
-)
-where TRequest : class
-where TResponse : class
-Public Function AddMethod (Of TRequest As Class , TResponse As Class ) (
- method As Method (Of TRequest, TResponse),
- handler As ServerStreamingServerMethod (Of TRequest, TResponse)
-) As ServerServiceDefinition Builder public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-ServerServiceDefinition Builder ^ AddMethod (
- Method <TRequest, TResponse>^ method ,
- ServerStreamingServerMethod <TRequest, TResponse>^ handler
-)member AddMethod :
- method : Method <'TRequest, 'TResponse> *
- handler : ServerStreamingServerMethod <'TRequest, 'TResponse> -> ServerServiceDefinition Builder when 'TRequest : not struct when 'TResponse : not struct
-Parameters method Type: Grpc.Core Method TRequest , TResponse The method. handler Type: Grpc.Core ServerStreamingServerMethod TRequest , TResponse The method handler. Type Parameters TRequest The request message class. TResponse The response message class. Return Value Type:
ServerServiceDefinition Builder 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)) ServerServiceDefinition Builder AddMethodTRequest , 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
Syntaxpublic ServerServiceDefinition Builder AddMethod <TRequest, TResponse>(
- Method <TRequest, TResponse> method ,
- UnaryServerMethod <TRequest, TResponse> handler
-)
-where TRequest : class
-where TResponse : class
-Public Function AddMethod (Of TRequest As Class , TResponse As Class ) (
- method As Method (Of TRequest, TResponse),
- handler As UnaryServerMethod (Of TRequest, TResponse)
-) As ServerServiceDefinition Builder public :
-generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-ServerServiceDefinition Builder ^ AddMethod (
- Method <TRequest, TResponse>^ method ,
- UnaryServerMethod <TRequest, TResponse>^ handler
-)member AddMethod :
- method : Method <'TRequest, 'TResponse> *
- handler : UnaryServerMethod <'TRequest, 'TResponse> -> ServerServiceDefinition Builder when 'TRequest : not struct when 'TResponse : not struct
-Parameters method Type: Grpc.Core Method TRequest , TResponse The method. handler Type: Grpc.Core UnaryServerMethod TRequest , TResponse The method handler. Type Parameters TRequest The request message class. TResponse The response message class. Return Value Type:
ServerServiceDefinition Builder 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 ServerServiceDefinition Builder Build Method
- Creates an immutable ServerServiceDefinition from this builder.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ServerServiceDefinition Build ()Public Function Build As ServerServiceDefinition public :
-ServerServiceDefinition ^ Build ()member Build : unit -> ServerServiceDefinition
-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 ServerServiceDefinition Builder Constructor
- Creates a new instance of builder.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Builder (
- string serviceName
-)Public Sub New (
- serviceName As String
-)public :
-Builder (
- String ^ serviceName
-)new :
- serviceName : string -> Builder Parameters serviceName Type: System String 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 ServerServiceDefinition CreateBuilder Method
- Creates a new builder object for ServerServiceDefinition .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static ServerServiceDefinition Builder CreateBuilder (
- string serviceName
-)Public Shared Function CreateBuilder (
- serviceName As String
-) As ServerServiceDefinition Builder public :
-static ServerServiceDefinition Builder ^ CreateBuilder (
- String ^ serviceName
-)static member CreateBuilder :
- serviceName : string -> ServerServiceDefinition Builder
-Parameters serviceName Type: System String The service name. Return Value Type:
ServerServiceDefinition Builder 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
- 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
SyntaxPublic Function KillAsync As Task public :
-Task ^ KillAsync ()member KillAsync : unit -> Task
-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) Server ServerPortCollection Add 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
Syntaxpublic int Add (
- ServerPort serverPort
-)Public Function Add (
- serverPort As ServerPort
-) As Integer public :
-int Add (
- ServerPort ^ serverPort
-)member Add :
- serverPort : ServerPort -> int
-Parameters serverPort Type: Grpc.Core ServerPort [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) Server ServerPortCollection Add 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
Syntaxpublic int Add (
- string host ,
- int port ,
- ServerCredentials credentials
-)Public Function Add (
- host As String ,
- port As Integer ,
- credentials As ServerCredentials
-) As Integer public :
-int Add (
- String ^ host ,
- int port ,
- ServerCredentials ^ credentials
-)member Add :
- host : string *
- port : int *
- credentials : ServerCredentials -> int
-Parameters host Type: System String the host port Type: System Int32 the port. If zero, an unused port is chosen automatically. credentials Type: Grpc.Core ServerCredentials 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 Server ServerPortCollection GetEnumerator Method
- Gets enumerator for this collection.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IEnumerator <ServerPort > GetEnumerator ()Public Function GetEnumerator As IEnumerator (Of ServerPort )public :
-virtual IEnumerator <ServerPort ^>^ GetEnumerator () sealed abstract GetEnumerator : unit -> IEnumerator <ServerPort >
-override GetEnumerator : unit -> IEnumerator <ServerPort > Return Value Type:
IEnumerator ServerPort Implements IEnumerable T GetEnumerator 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 Server ServiceDefinitionCollection Add 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
Syntaxpublic void Add (
- ServerServiceDefinition serviceDefinition
-)Public Sub Add (
- serviceDefinition As ServerServiceDefinition
-)public :
-void Add (
- ServerServiceDefinition ^ serviceDefinition
-)member Add :
- serviceDefinition : ServerServiceDefinition -> unit
-Parameters serviceDefinition Type: Grpc.Core ServerServiceDefinition [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 Server ServiceDefinitionCollection GetEnumerator Method
- Gets enumerator for this collection.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IEnumerator <ServerServiceDefinition > GetEnumerator ()Public Function GetEnumerator As IEnumerator (Of ServerServiceDefinition )public :
-virtual IEnumerator <ServerServiceDefinition ^>^ GetEnumerator () sealed abstract GetEnumerator : unit -> IEnumerator <ServerServiceDefinition >
-override GetEnumerator : unit -> IEnumerator <ServerServiceDefinition > Return Value Type:
IEnumerator ServerServiceDefinition Implements IEnumerable T GetEnumerator 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 Server ShutdownAsync 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
Syntaxpublic Task ShutdownAsync ()Public Function ShutdownAsync As Task public :
-Task ^ ShutdownAsync ()member ShutdownAsync : unit -> Task
-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
- Starts the server.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxmember Start : unit -> unit
- 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
- Create a new server.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Server (
- IEnumerable <ChannelOption > options = null
-)Public Sub New (
- Optional options As IEnumerable (Of ChannelOption ) = Nothing
-)public :
-Server (
- IEnumerable <ChannelOption ^>^ options = nullptr
-)new :
- ?options : IEnumerable <ChannelOption >
-(* Defaults:
- let _ options = defaultArg options null
-*)
--> Server Parameters options (Optional)Type: System.Collections.Generic IEnumerable ChannelOption 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
Syntaxpublic :
-SslCredentials ()new : unit -> 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
Syntaxpublic SslCredentials (
- string rootCertificates
-)Public Sub New (
- rootCertificates As String
-)public :
-SslCredentials (
- String ^ rootCertificates
-)new :
- rootCertificates : string -> SslCredentials Parameters rootCertificates Type: System String [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
Syntaxpublic SslCredentials (
- string rootCertificates ,
- KeyCertificatePair keyCertificatePair
-)Public Sub New (
- rootCertificates As String ,
- keyCertificatePair As KeyCertificatePair
-)public :
-SslCredentials (
- String ^ rootCertificates ,
- KeyCertificatePair ^ keyCertificatePair
-)new :
- rootCertificates : string *
- keyCertificatePair : KeyCertificatePair -> SslCredentials Parameters rootCertificates Type: System String string containing PEM encoded server root certificates. keyCertificatePair Type: Grpc.Core KeyCertificatePair 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 (IEnumerable KeyCertificatePair )
- 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
Syntaxpublic SslServerCredentials (
- IEnumerable <KeyCertificatePair > keyCertificatePairs
-)Public Sub New (
- keyCertificatePairs As IEnumerable (Of KeyCertificatePair )
-)public :
-SslServerCredentials (
- IEnumerable <KeyCertificatePair ^>^ keyCertificatePairs
-)new :
- keyCertificatePairs : IEnumerable <KeyCertificatePair > -> SslServerCredentials Parameters keyCertificatePairs Type: System.Collections.Generic IEnumerable KeyCertificatePair 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 (IEnumerable KeyCertificatePair , String, Boolean)
- Creates server-side SSL credentials.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic SslServerCredentials (
- IEnumerable <KeyCertificatePair > keyCertificatePairs ,
- string rootCertificates ,
- bool forceClientAuth
-)Public Sub New (
- keyCertificatePairs As IEnumerable (Of KeyCertificatePair ),
- rootCertificates As String ,
- forceClientAuth As Boolean
-)public :
-SslServerCredentials (
- IEnumerable <KeyCertificatePair ^>^ keyCertificatePairs ,
- String ^ rootCertificates ,
- bool forceClientAuth
-)new :
- keyCertificatePairs : IEnumerable <KeyCertificatePair > *
- rootCertificates : string *
- forceClientAuth : bool -> SslServerCredentials Parameters keyCertificatePairs Type: System.Collections.Generic IEnumerable KeyCertificatePair Key-certificates to use. rootCertificates Type: System String PEM encoded client root certificates used to authenticate client. forceClientAuth Type: System Boolean 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic override string ToString ()Public Overrides Function ToString As String public :
-virtual String ^ ToString () override abstract ToString : unit -> string
-override ToString : unit -> string 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
- Creates a new instance of Status .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Status (
- StatusCode statusCode ,
- string detail
-)Public Sub New (
- statusCode As StatusCode ,
- detail As String
-)public :
-Status (
- StatusCode statusCode ,
- String ^ detail
-)new :
- statusCode : StatusCode *
- detail : string -> Status Parameters statusCode Type: Grpc.Core StatusCode Status code. detail Type: System String 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 AsyncStreamExtensions ForEachAsyncT 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
Syntaxpublic static Task ForEachAsync <T>(
- this IAsyncStreamReader <T> streamReader ,
- Func <T, Task > asyncAction
-)
-where T : class
-<ExtensionAttribute >
-Public Shared Function ForEachAsync (Of T As Class ) (
- streamReader As IAsyncStreamReader (Of T),
- asyncAction As Func (Of T, Task )
-) As Task public :
-[ExtensionAttribute ]
-generic <typename T>
-where T : ref class
-static Task ^ ForEachAsync (
- IAsyncStreamReader <T>^ streamReader ,
- Func <T, Task ^>^ asyncAction
-)[<ExtensionAttribute >]
-static member ForEachAsync :
- streamReader : IAsyncStreamReader <'T> *
- asyncAction : Func <'T, Task > -> Task when 'T : not struct
- Parameters streamReader Type: Grpc.Core IAsyncStreamReader T [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: System Func T , 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
IAsyncStreamReader T . 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 AsyncStreamExtensions ToListAsyncT 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
Syntaxpublic static Task <List <T>> ToListAsync <T>(
- this IAsyncStreamReader <T> streamReader
-)
-where T : class
-<ExtensionAttribute >
-Public Shared Function ToListAsync (Of T As Class ) (
- streamReader As IAsyncStreamReader (Of T)
-) As Task (Of List (Of T)) public :
-[ExtensionAttribute ]
-generic <typename T>
-where T : ref class
-static Task <List <T>^>^ ToListAsync (
- IAsyncStreamReader <T>^ streamReader
-)[<ExtensionAttribute >]
-static member ToListAsync :
- streamReader : IAsyncStreamReader <'T> -> Task <List <'T>> when 'T : not struct
- Parameters streamReader Type: Grpc.Core IAsyncStreamReader T [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:
Task List T Usage Note In Visual Basic and C#, you can call this method as an instance method on any object of type
IAsyncStreamReader T . 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) AsyncStreamExtensions WriteAllAsyncT 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
Syntaxpublic static Task WriteAllAsync <T>(
- this IClientStreamWriter <T> streamWriter ,
- IEnumerable <T> elements ,
- bool complete = true
-)
-where T : class
-<ExtensionAttribute >
-Public Shared Function WriteAllAsync (Of T As Class ) (
- streamWriter As IClientStreamWriter (Of T),
- elements As IEnumerable (Of T),
- Optional complete As Boolean = true
-) As Task public :
-[ExtensionAttribute ]
-generic <typename T>
-where T : ref class
-static Task ^ WriteAllAsync (
- IClientStreamWriter <T>^ streamWriter ,
- IEnumerable <T>^ elements ,
- bool complete = true
-)[<ExtensionAttribute >]
-static member WriteAllAsync :
- streamWriter : IClientStreamWriter <'T> *
- elements : IEnumerable <'T> *
- ?complete : bool
-(* Defaults:
- let _ complete = defaultArg complete true
-*)
--> Task when 'T : not struct
- Parameters streamWriter Type: Grpc.Core IClientStreamWriter T [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.Generic IEnumerable T [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: System Boolean [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
IClientStreamWriter T . 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)) AsyncStreamExtensions WriteAllAsyncT 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
Syntaxpublic static Task WriteAllAsync <T>(
- this IServerStreamWriter <T> streamWriter ,
- IEnumerable <T> elements
-)
-where T : class
-<ExtensionAttribute >
-Public Shared Function WriteAllAsync (Of T As Class ) (
- streamWriter As IServerStreamWriter (Of T),
- elements As IEnumerable (Of T)
-) As Task public :
-[ExtensionAttribute ]
-generic <typename T>
-where T : ref class
-static Task ^ WriteAllAsync (
- IServerStreamWriter <T>^ streamWriter ,
- IEnumerable <T>^ elements
-)[<ExtensionAttribute >]
-static member WriteAllAsync :
- streamWriter : IServerStreamWriter <'T> *
- elements : IEnumerable <'T> -> Task when 'T : not struct
- Parameters streamWriter Type: Grpc.Core IServerStreamWriter T [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.Generic IEnumerable T [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
IServerStreamWriter T . 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 BenchmarkUtil RunBenchmark 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
Syntaxpublic static void RunBenchmark (
- int warmupIterations ,
- int benchmarkIterations ,
- Action action
-)Public Shared Sub RunBenchmark (
- warmupIterations As Integer ,
- benchmarkIterations As Integer ,
- action As Action
-)public :
-static void RunBenchmark (
- int warmupIterations ,
- int benchmarkIterations ,
- Action ^ action
-)static member RunBenchmark :
- warmupIterations : int *
- benchmarkIterations : int *
- action : Action -> unit
-Parameters warmupIterations Type: System Int32 [Missing <param name="warmupIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]
benchmarkIterations Type: System Int32 [Missing <param name="benchmarkIterations"/> documentation for "M:Grpc.Core.Utils.BenchmarkUtil.RunBenchmark(System.Int32,System.Int32,System.Action)"]
action Type: System Action [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) Preconditions CheckArgument Method (Boolean)
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static void CheckArgument (
- bool condition
-)Public Shared Sub CheckArgument (
- condition As Boolean
-)public :
-static void CheckArgument (
- bool condition
-)static member CheckArgument :
- condition : bool -> unit
-Parameters condition Type: System Boolean 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) Preconditions CheckArgument Method (Boolean, String)
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static void CheckArgument (
- bool condition ,
- string errorMessage
-)Public Shared Sub CheckArgument (
- condition As Boolean ,
- errorMessage As String
-)public :
-static void CheckArgument (
- bool condition ,
- String ^ errorMessage
-)static member CheckArgument :
- condition : bool *
- errorMessage : string -> unit
-Parameters condition Type: System Boolean The condition. errorMessage Type: System String 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) Preconditions CheckNotNullT Method (T )
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static T CheckNotNull <T>(
- T reference
-)
-Public Shared Function CheckNotNull (Of T) (
- reference As T
-) As Tpublic :
-generic <typename T>
-static T CheckNotNull (
- T reference
-)static member CheckNotNull :
- reference : 'T -> 'T
-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) Preconditions CheckNotNullT Method (T , String)
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static T CheckNotNull <T>(
- T reference ,
- string paramName
-)
-Public Shared Function CheckNotNull (Of T) (
- reference As T,
- paramName As String
-) As Tpublic :
-generic <typename T>
-static T CheckNotNull (
- T reference ,
- String ^ paramName
-)static member CheckNotNull :
- reference : 'T *
- paramName : string -> 'T
-Parameters reference Type: T The reference. paramName Type: System String 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) Preconditions CheckState Method (Boolean)
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static void CheckState (
- bool condition
-)Public Shared Sub CheckState (
- condition As Boolean
-)public :
-static void CheckState (
- bool condition
-)static member CheckState :
- condition : bool -> unit
-Parameters condition Type: System Boolean 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) Preconditions CheckState Method (Boolean, String)
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static void CheckState (
- bool condition ,
- string errorMessage
-)Public Shared Sub CheckState (
- condition As Boolean ,
- errorMessage As String
-)public :
-static void CheckState (
- bool condition ,
- String ^ errorMessage
-)static member CheckState :
- condition : bool *
- errorMessage : string -> unit
-Parameters condition Type: System Boolean The condition. errorMessage Type: System String 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
- Initializes a new instance of WriteOptions class.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic WriteOptions (
- WriteFlags flags =
-)Public Sub New (
- Optional flags As WriteFlags =
-)public :
-WriteOptions (
- WriteFlags flags =
-)new :
- ?flags : WriteFlags
-(* Defaults:
- let _ flags = defaultArg flags
-*)
--> WriteOptions Parameters flags (Optional)Type: Grpc.Core WriteFlags 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 The AuthInterceptors type exposes the following members.
Methods 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 AsyncClientStreamingCall TRequest, TResponse generic type exposes the following members.
Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetAwaiter
- Allows awaiting this object directly.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 AsyncDuplexStreamingCall TRequest, TResponse generic type exposes the following members.
Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 AsyncServerStreamingCall TResponse generic type exposes the following members.
Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 AsyncUnaryCall TResponse generic type exposes the following members.
Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetAwaiter
- Allows awaiting this object directly.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 CallInvocationDetails TRequest, TResponse generic type exposes the following members.
Methods 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 The CallOptions type exposes the following members.
Methods
-
- Name Description Equals Indicates whether this instance and a specified object are equal.
(Inherited from ValueType .)GetHashCode Returns the hash code for this instance.
(Inherited from ValueType .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString Returns the fully qualified type name of this instance.
(Inherited from ValueType .)WithCancellationToken
- Returns new instance of
CallOptions with
-
CancellationToken set to the value provided. Values of all other fields are preserved.
-
WithDeadline
- Returns new instance of
CallOptions with
-
Deadline set to the value provided. Values of all other fields are preserved.
-
WithHeaders
- 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 The Calls type exposes the following members.
Methods 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 The Channel type exposes the following members.
Methods
-
- Name Description ConnectAsync
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ShutdownAsync
- Waits until there are no more active calls for this channel and then cleans up
- resources used by this channel.
-
ToString Returns a string that represents the current object.
(Inherited from Object .)WaitForStateChangedAsync
- 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 The ChannelOption type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 The ClientBase type exposes the following members.
Methods 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
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The Credentials type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The GrpcEnvironment type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)SetLogger
- Sets the application-wide logger that should be used by gRPC.
-
ToString 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
\ 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 IAsyncStreamWriter T generic type exposes the following members.
Methods
-
- Name Description WriteAsync
- 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
\ 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
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 The ConsoleLogger type exposes the following members.
Methods 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 The ILogger type exposes the following members.
Methods See Also
\ 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 The Marshaller T generic type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The Metadata type exposes the following members.
Methods See Also
\ 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 The Metadata Entry type exposes the following members.
Methods See Also
\ 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 Method TRequest, TResponse generic type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The RpcException type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetBaseException When overridden in a derived class, returns the
Exception that is the root cause of one or more subsequent exceptions.
(Inherited from Exception .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetObjectData When overridden in a derived class, sets the
SerializationInfo with information about the exception.
(Inherited from Exception .)GetType Gets the runtime type of the current instance.
(Inherited from Exception .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The Server type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)KillAsync
- Requests server shutdown while cancelling all the in-progress calls.
- The returned task finishes when shutdown procedure is complete.
-
MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ShutdownAsync
- 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.
-
Start
- Starts the server.
-
ToString 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
-
- Name Description CreatePropagationToken
- Creates a propagation token to be used to propagate call context to a child call.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Returns a string that represents the current object.
(Inherited from Object .)WriteResponseHeadersAsync
- 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
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The ServerPort type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
-
- Name Description CreateBuilder
- Creates a new builder object for ServerServiceDefinition .
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The ServerServiceDefinition Builder type exposes the following members.
Methods
-
- Name Description AddMethod TRequest, TResponse (Method TRequest, TResponse , ClientStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a client streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , DuplexStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a bidirectional streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , ServerStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a server streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , UnaryServerMethod TRequest, TResponse )
- Adds a definitions for a single request - single response method.
-
Build
- Creates an immutable ServerServiceDefinition from this builder.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 Server ServerPortCollection type exposes the following members.
Methods
-
- Name Description Add(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.Add(String, Int32, ServerCredentials)
- Adds a new port on which server should listen.
-
Return Value Type: The port on which server will be listening.Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetEnumerator
- Gets enumerator for this collection.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 Server ServiceDefinitionCollection type exposes the following members.
Methods
-
- Name Description Add
- Adds a service definition to the server. This is how you register
- handlers for a service with the server. Only call this before Start().
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetEnumerator
- Gets enumerator for this collection.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The SslCredentials type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 The Status type exposes the following members.
Methods 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 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
\ 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 Methods See Also
\ 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 The WriteOptions type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 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
-
- Class Description AuthInterceptors
- 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
Main namespace for gRPC C# functionality. Contains concepts representing both client side and server side gRPC logic.
-
-
Classes
-
- Class Description AsyncClientStreamingCall TRequest, TResponse
- Return type for client streaming calls.
-
AsyncDuplexStreamingCall TRequest, TResponse
- Return type for bidirectional streaming calls.
-
AsyncServerStreamingCall TResponse
- Return type for server streaming calls.
-
AsyncUnaryCall TResponse
- Return type for single request - single response call.
-
Calls
- 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.
-
Channel
- 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.
-
ChannelOption
- Channel option specified when creating a channel.
- Corresponds to grpc_channel_args from grpc/grpc.h.
-
ChannelOptions
- Defines names of supported channel options.
-
ClientBase
- Base class for client-side stubs.
-
ContextPropagationOptions ContextPropagationToken
- 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.
-
Credentials
- Client-side credentials. Used for creation of a secure channel.
-
GrpcEnvironment
- Encapsulates initialization and shutdown of gRPC library.
-
KeyCertificatePair
- Key certificate pair (in PEM encoding).
-
Marshaller T
- Encapsulates the logic for serializing and deserializing messages.
-
Marshallers
- Utilities for creating marshallers.
-
Metadata
- 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.Method TRequest, TResponse
- A description of a remote method.
-
RpcException
- Thrown when remote procedure call fails. Every
RpcException is associated with a resulting
Status of the call.
-
Server
- gRPC server. A single server can server arbitrary number of services and can listen on more than one ports.
-
Server ServerPortCollection
- Collection of server ports.
-
Server ServiceDefinitionCollection
- Collection of service definitions.
-
ServerCallContext
- Context for a server-side call.
-
ServerCredentials
- Server side credentials.
-
ServerPort
- A port exposed by a server.
-
ServerServiceDefinition
- 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.
-
ServerServiceDefinition Builder SslCredentials
- Client-side SSL credentials.
-
SslServerCredentials
- Server-side SSL credentials.
-
VersionInfo
- Provides info about current version of gRPC.
-
WriteOptions
- Options for write operations.
-
Structures Interfaces Delegates Enumerations
-
- Enumeration Description ChannelOption OptionType
- Type of ChannelOption .
-
ChannelState
- Connectivity state of a channel.
- Based on grpc_connectivity_state from grpc/grpc.h
-
CompressionLevel
- Compression level based on grpc_compression_level from grpc/compression.h
-
MethodType
- Method types supported by gRPC.
-
StatusCode
- Result of a remote procedure call.
- Based on grpc_status_code from grpc/status.h
-
WriteFlags
- Flags for write operations.
-
See AlsoReference [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
-
- Class Description ConsoleLogger Logger that logs to System.Console.
Interfaces
-
- Interface Description ILogger 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
-
- Class Description AsyncStreamExtensions
- Extension methods that simplify work with gRPC streaming calls.
-
BenchmarkUtil
- Utility methods to run microbenchmarks.
-
Preconditions
- 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
-
- Name Description CallInvocationDetails TRequest, TResponse (Channel, Method TRequest, TResponse , CallOptions) CallInvocationDetails TRequest, TResponse (Channel, Method TRequest, TResponse , String, CallOptions) CallInvocationDetails TRequest, TResponse (Channel, String, String, Marshaller TRequest , Marshaller TResponse , 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 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 Overload List See Also
\ 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 ConsoleLogger Error Method
Overload List See Also
\ 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 ConsoleLogger Warning Method
Overload List See Also
\ 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 Overload List See Also
\ 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 Overload List See Also
\ 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 Overload List See Also
\ 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 Overload List See Also
\ 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 Overload List 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 Overload List
-
- Name Description AddMethod TRequest, TResponse (Method TRequest, TResponse , ClientStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a client streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , DuplexStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a bidirectional streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , ServerStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a server streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , UnaryServerMethod TRequest, 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
\ 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
\ 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 SslServerCredentials Constructor
Overload List See Also
\ 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 AsyncStreamExtensions WriteAllAsync Method
Overload List See Also
\ 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 Preconditions CheckArgument Method
Overload List 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 Preconditions CheckNotNull Method
Overload List See Also
\ 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 Preconditions CheckState Method
Overload List 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 , TResponse RequestStream Property
- Async stream to send streaming requests.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IClientStreamWriter <TRequest> RequestStream { get ; }Public ReadOnly Property RequestStream As IClientStreamWriter (Of TRequest)
- Get public :
-property IClientStreamWriter <TRequest>^ RequestStream {
- IClientStreamWriter <TRequest>^ get ();
-}member RequestStream : IClientStreamWriter <'TRequest> with get
-Property Value Type:
IClientStreamWriter TRequest 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 , TResponse ResponseAsync Property
- Asynchronous call result.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <TResponse> ResponseAsync { get ; }Public ReadOnly Property ResponseAsync As Task (Of TResponse)
- Get public :
-property Task <TResponse>^ ResponseAsync {
- Task <TResponse>^ get ();
-}member ResponseAsync : Task <'TResponse> with get
-Property Value Type:
Task TResponse 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 , TResponse ResponseHeadersAsync Property
- Asynchronous access to response headers.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <Metadata > ResponseHeadersAsync { get ; }Public ReadOnly Property ResponseHeadersAsync As Task (Of Metadata )
- Get public :
-property Task <Metadata ^>^ ResponseHeadersAsync {
- Task <Metadata ^>^ get ();
-}member ResponseHeadersAsync : Task <Metadata > with get
-Property Value Type:
Task Metadata 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 , TResponse RequestStream Property
- Async stream to send streaming requests.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IClientStreamWriter <TRequest> RequestStream { get ; }Public ReadOnly Property RequestStream As IClientStreamWriter (Of TRequest)
- Get public :
-property IClientStreamWriter <TRequest>^ RequestStream {
- IClientStreamWriter <TRequest>^ get ();
-}member RequestStream : IClientStreamWriter <'TRequest> with get
-Property Value Type:
IClientStreamWriter TRequest 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 , TResponse ResponseHeadersAsync Property
- Asynchronous access to response headers.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <Metadata > ResponseHeadersAsync { get ; }Public ReadOnly Property ResponseHeadersAsync As Task (Of Metadata )
- Get public :
-property Task <Metadata ^>^ ResponseHeadersAsync {
- Task <Metadata ^>^ get ();
-}member ResponseHeadersAsync : Task <Metadata > with get
-Property Value Type:
Task Metadata 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 , TResponse ResponseStream Property
- Async stream to read streaming responses.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IAsyncStreamReader <TResponse> ResponseStream { get ; }Public ReadOnly Property ResponseStream As IAsyncStreamReader (Of TResponse)
- Get public :
-property IAsyncStreamReader <TResponse>^ ResponseStream {
- IAsyncStreamReader <TResponse>^ get ();
-}member ResponseStream : IAsyncStreamReader <'TResponse> with get
-Property Value Type:
IAsyncStreamReader TResponse 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 AsyncServerStreamingCallTResponse ResponseHeadersAsync Property
- Asynchronous access to response headers.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <Metadata > ResponseHeadersAsync { get ; }Public ReadOnly Property ResponseHeadersAsync As Task (Of Metadata )
- Get public :
-property Task <Metadata ^>^ ResponseHeadersAsync {
- Task <Metadata ^>^ get ();
-}member ResponseHeadersAsync : Task <Metadata > with get
-Property Value Type:
Task Metadata 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 AsyncServerStreamingCallTResponse ResponseStream Property
- Async stream to read streaming responses.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IAsyncStreamReader <TResponse> ResponseStream { get ; }Public ReadOnly Property ResponseStream As IAsyncStreamReader (Of TResponse)
- Get public :
-property IAsyncStreamReader <TResponse>^ ResponseStream {
- IAsyncStreamReader <TResponse>^ get ();
-}member ResponseStream : IAsyncStreamReader <'TResponse> with get
-Property Value Type:
IAsyncStreamReader TResponse 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 AsyncUnaryCallTResponse ResponseAsync Property
- Asynchronous call result.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <TResponse> ResponseAsync { get ; }Public ReadOnly Property ResponseAsync As Task (Of TResponse)
- Get public :
-property Task <TResponse>^ ResponseAsync {
- Task <TResponse>^ get ();
-}member ResponseAsync : Task <'TResponse> with get
-Property Value Type:
Task TResponse 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 AsyncUnaryCallTResponse ResponseHeadersAsync Property
- Asynchronous access to response headers.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task <Metadata > ResponseHeadersAsync { get ; }Public ReadOnly Property ResponseHeadersAsync As Task (Of Metadata )
- Get public :
-property Task <Metadata ^>^ ResponseHeadersAsync {
- Task <Metadata ^>^ get ();
-}member ResponseHeadersAsync : Task <Metadata > with get
-Property Value Type:
Task Metadata 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 , TResponse Channel Property
- Get channel associated with this call.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Channel Channel { get ; }Public ReadOnly Property Channel As Channel
- Get public :
-property Channel ^ Channel {
- Channel ^ get ();
-}member Channel : Channel with 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 , TResponse Host Property
- Get name of host.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Host { get ; }Public ReadOnly Property Host As String
- Get public :
-property String ^ Host {
- String ^ get ();
-}member Host : string with 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 , TResponse Method Property
- Gets name of method to be called.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Method { get ; }Public ReadOnly Property Method As String
- Get public :
-property String ^ Method {
- String ^ get ();
-}member Method : string with 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 , TResponse Options Property
- Gets the call options.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic CallOptions Options { get ; }Public ReadOnly Property Options As CallOptions
- Get public :
-property CallOptions Options {
- CallOptions get ();
-}member Options : CallOptions with 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 , TResponse RequestMarshaller Property
- Gets marshaller used to serialize requests.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Marshaller <TRequest> RequestMarshaller { get ; }Public ReadOnly Property RequestMarshaller As Marshaller (Of TRequest)
- Get public :
-property Marshaller <TRequest>^ RequestMarshaller {
- Marshaller <TRequest>^ get ();
-}member RequestMarshaller : Marshaller <'TRequest> with get
-Property Value Type:
Marshaller TRequest 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 , TResponse ResponseMarshaller Property
- Gets marshaller used to deserialized responses.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Marshaller <TResponse> ResponseMarshaller { get ; }Public ReadOnly Property ResponseMarshaller As Marshaller (Of TResponse)
- Get public :
-property Marshaller <TResponse>^ ResponseMarshaller {
- Marshaller <TResponse>^ get ();
-}member ResponseMarshaller : Marshaller <'TResponse> with get
-Property Value Type:
Marshaller TResponse 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 CallOptions CancellationToken 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
Syntaxpublic CancellationToken CancellationToken { get ; }Public ReadOnly Property CancellationToken As CancellationToken
- Get public :
-property CancellationToken CancellationToken {
- CancellationToken get ();
-}member CancellationToken : CancellationToken with 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 CallOptions Deadline Property
- Call deadline.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Nullable <DateTime > Deadline { get ; }Public ReadOnly Property Deadline As Nullable (Of DateTime )
- Get public :
-property Nullable <DateTime > Deadline {
- Nullable <DateTime > get ();
-}member Deadline : Nullable <DateTime > with get
-Property Value Type:
Nullable DateTime 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 CallOptions Headers 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
Syntaxpublic Metadata Headers { get ; }Public ReadOnly Property Headers As Metadata
- Get public :
-property Metadata ^ Headers {
- Metadata ^ get ();
-}member Headers : Metadata with 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 CallOptions PropagationToken Property
- Token for propagating parent call context.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ContextPropagationToken PropagationToken { get ; }Public ReadOnly Property PropagationToken As ContextPropagationToken
- Get public :
-property ContextPropagationToken ^ PropagationToken {
- ContextPropagationToken ^ get ();
-}member PropagationToken : ContextPropagationToken with 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 CallOptions WriteOptions 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
Syntaxpublic WriteOptions WriteOptions { get ; }Public ReadOnly Property WriteOptions As WriteOptions
- Get public :
-property WriteOptions ^ WriteOptions {
- WriteOptions ^ get ();
-}member WriteOptions : WriteOptions with 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 ChannelOption IntValue Property
- Gets the integer value the ChannelOption .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic int IntValue { get ; }Public ReadOnly Property IntValue As Integer
- Get public :
-property int IntValue {
- int get ();
-}member IntValue : int with 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 ChannelOption Name Property
- Gets the name of the ChannelOption .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Name { get ; }Public ReadOnly Property Name As String
- Get public :
-property String ^ Name {
- String ^ get ();
-}member Name : string with 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 ChannelOption StringValue Property
- Gets the string value the ChannelOption .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string StringValue { get ; }Public ReadOnly Property StringValue As String
- Get public :
-property String ^ StringValue {
- String ^ get ();
-}member StringValue : string with 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 ChannelOption Type Property
- Gets the type of the ChannelOption .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ChannelOption OptionType Type { get ; }Public ReadOnly Property Type As ChannelOption OptionType
- Get public :
-property ChannelOption OptionType Type {
- ChannelOption OptionType get ();
-}member Type : ChannelOption OptionType with get
-Property Value Type:
ChannelOption OptionType 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 Channel ResolvedTarget 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
Syntaxpublic string ResolvedTarget { get ; }Public ReadOnly Property ResolvedTarget As String
- Get public :
-property String ^ ResolvedTarget {
- String ^ get ();
-}member ResolvedTarget : string with 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
- Gets current connectivity state of this channel.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ChannelState State { get ; }Public ReadOnly Property State As ChannelState
- Get public :
-property ChannelState State {
- ChannelState get ();
-}member State : ChannelState with 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 The original target used to create the channel.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Target { get ; }Public ReadOnly Property Target As String
- Get public :
-property String ^ Target {
- String ^ get ();
-}member Target : string with 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 ClientBase Channel Property
- Channel associated with this client.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Channel Channel { get ; }Public ReadOnly Property Channel As Channel
- Get public :
-property Channel ^ Channel {
- Channel ^ get ();
-}member Channel : Channel with 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 ClientBase HeaderInterceptor 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
Syntaxpublic HeaderInterceptor HeaderInterceptor { get ; set ; }Public Property HeaderInterceptor As HeaderInterceptor
- Get
- Set public :
-property HeaderInterceptor ^ HeaderInterceptor {
- HeaderInterceptor ^ get ();
- void set (HeaderInterceptor ^ value );
-}member HeaderInterceptor : HeaderInterceptor with 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
- 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
Syntaxpublic string Host { get ; set ; }Public Property Host As String
- Get
- Set public :
-property String ^ Host {
- String ^ get ();
- void set (String ^ value );
-}member Host : string with 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 ContextPropagationOptions IsPropagateCancellation 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
Syntaxpublic bool IsPropagateCancellation { get ; }Public ReadOnly Property IsPropagateCancellation As Boolean
- Get public :
-property bool IsPropagateCancellation {
- bool get ();
-}member IsPropagateCancellation : bool with 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 ContextPropagationOptions IsPropagateDeadline 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
Syntaxpublic bool IsPropagateDeadline { get ; }Public ReadOnly Property IsPropagateDeadline As Boolean
- Get public :
-property bool IsPropagateDeadline {
- bool get ();
-}member IsPropagateDeadline : bool with 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 Credentials Insecure 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
Syntaxpublic static Credentials Insecure { get ; }Public Shared ReadOnly Property Insecure As Credentials
- Get public :
-static property Credentials ^ Insecure {
- Credentials ^ get ();
-}static member Insecure : Credentials with 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 GrpcEnvironment Logger Property
- Gets application-wide logger used by gRPC.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static ILogger Logger { get ; }Public Shared ReadOnly Property Logger As ILogger
- Get public :
-static property ILogger ^ Logger {
- ILogger ^ get ();
-}static member Logger : ILogger with 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 IAsyncStreamWriterT WriteOptions 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
SyntaxWriteOptions WriteOptions { get ; set ; }Property WriteOptions As WriteOptions
- Get
- Set property WriteOptions ^ WriteOptions {
- WriteOptions ^ get ();
- void set (WriteOptions ^ value );
-}abstract WriteOptions : WriteOptions with 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 IHasWriteOptions WriteOptions Property
- Gets or sets the write options.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxWriteOptions WriteOptions { get ; set ; }Property WriteOptions As WriteOptions
- Get
- Set property WriteOptions ^ WriteOptions {
- WriteOptions ^ get ();
- void set (WriteOptions ^ value );
-}abstract WriteOptions : WriteOptions with 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
- 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
SyntaxReadOnly Property FullName As String
- Get property String ^ FullName {
- String ^ get ();
-}abstract FullName : string with 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
- Gets the unqualified name of the method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxReadOnly Property Name As String
- Get property String ^ Name {
- String ^ get ();
-}abstract Name : string with 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 IMethod ServiceName 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
Syntaxstring ServiceName { get ; }ReadOnly Property ServiceName As String
- Get property String ^ ServiceName {
- String ^ get ();
-}abstract ServiceName : string with 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
- Gets the type of the method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxReadOnly Property Type As MethodType
- Get property MethodType Type {
- MethodType get ();
-}abstract Type : MethodType with 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 KeyCertificatePair CertificateChain Property
- PEM encoded certificate chain.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string CertificateChain { get ; }Public ReadOnly Property CertificateChain As String
- Get public :
-property String ^ CertificateChain {
- String ^ get ();
-}member CertificateChain : string with 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 KeyCertificatePair PrivateKey Property
- PEM encoded private key.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string PrivateKey { get ; }Public ReadOnly Property PrivateKey As String
- Get public :
-property String ^ PrivateKey {
- String ^ get ();
-}member PrivateKey : string with 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 MarshallerT Deserializer Property
- Gets the deserializer function.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Func <byte [], T> Deserializer { get ; }Public ReadOnly Property Deserializer As Func (Of Byte (), T)
- Get public :
-property Func <array <unsigned char >^, T>^ Deserializer {
- Func <array <unsigned char >^, T>^ get ();
-}member Deserializer : Func <byte [], 'T> with get
-Property Value Type:
Func Byte ,
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 MarshallerT Serializer Property
- Gets the serializer function.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Func <T, byte []> Serializer { get ; }Public ReadOnly Property Serializer As Func (Of T, Byte ())
- Get public :
-property Func <T, array <unsigned char >^>^ Serializer {
- Func <T, array <unsigned char >^>^ get ();
-}member Serializer : Func <'T, byte []> with get
-Property Value Type:
Func T ,
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 Marshallers StringMarshaller 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
Syntaxpublic static Marshaller <string > StringMarshaller { get ; }Public Shared ReadOnly Property StringMarshaller As Marshaller (Of String )
- Get public :
-static property Marshaller <String ^>^ StringMarshaller {
- Marshaller <String ^>^ get ();
-}static member StringMarshaller : Marshaller <string > with get
-Property Value Type:
Marshaller String 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 [Missing <summary> documentation for "P:Grpc.Core.Metadata.Count"]
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic int Count { get ; }Public ReadOnly Property Count As Integer
- Get public :
-virtual property int Count {
- int get () sealed ;
-}abstract Count : int with get
-override Count : int with get Property Value Type:
Int32 Implements ICollection T Count 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 Metadata Entry IsBinary 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
Syntaxpublic bool IsBinary { get ; }Public ReadOnly Property IsBinary As Boolean
- Get public :
-property bool IsBinary {
- bool get ();
-}member IsBinary : bool with 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 Metadata Entry Key Property
- Gets the metadata entry key.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Key { get ; }Public ReadOnly Property Key As String
- Get public :
-property String ^ Key {
- String ^ get ();
-}member Key : string with 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 Metadata Entry Value Property
- Gets the string value of this metadata entry.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Value { get ; }Public ReadOnly Property Value As String
- Get public :
-property String ^ Value {
- String ^ get ();
-}member Value : string with 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 Metadata Entry ValueBytes Property
- Gets the binary value of this metadata entry.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic byte [] ValueBytes { get ; }Public ReadOnly Property ValueBytes As Byte ()
- Get public :
-property array <unsigned char >^ ValueBytes {
- array <unsigned char >^ get ();
-}member ValueBytes : byte [] with 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 Metadata IsReadOnly 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
Syntaxpublic bool IsReadOnly { get ; }Public ReadOnly Property IsReadOnly As Boolean
- Get public :
-virtual property bool IsReadOnly {
- bool get () sealed ;
-}abstract IsReadOnly : bool with get
-override IsReadOnly : bool with get Property Value Type:
Boolean Implements ICollection T IsReadOnly 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 [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
Syntaxpublic Metadata Entry this [
- int index
-] { get ; set ; }Public Default Property Item (
- index As Integer
-) As Metadata Entry
- Get
- Set public :
-virtual property Metadata Entry default [int index ] {
- Metadata Entry get (int index ) sealed ;
- void set (int index , Metadata Entry value ) sealed ;
-}abstract Item : Metadata Entry with get , set
-override Item : Metadata Entry with get , set Parameters index Type: System Int32 Property Value Type:
Metadata Entry Implements IList T Item Int32 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 , TResponse FullName 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
Syntaxpublic string FullName { get ; }Public ReadOnly Property FullName As String
- Get public :
-virtual property String ^ FullName {
- String ^ get () sealed ;
-}abstract FullName : string with get
-override FullName : string with get Property Value Type:
String Implements IMethod FullName 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 , TResponse Name Property
- Gets the unqualified name of the method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Name { get ; }Public ReadOnly Property Name As String
- Get public :
-virtual property String ^ Name {
- String ^ get () sealed ;
-}abstract Name : string with get
-override Name : string with get Property Value Type:
String Implements IMethod Name 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 , TResponse RequestMarshaller Property
- Gets the marshaller used for request messages.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Marshaller <TRequest> RequestMarshaller { get ; }Public ReadOnly Property RequestMarshaller As Marshaller (Of TRequest)
- Get public :
-property Marshaller <TRequest>^ RequestMarshaller {
- Marshaller <TRequest>^ get ();
-}member RequestMarshaller : Marshaller <'TRequest> with get
-Property Value Type:
Marshaller TRequest 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 , TResponse ResponseMarshaller Property
- Gets the marshaller used for response messages.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Marshaller <TResponse> ResponseMarshaller { get ; }Public ReadOnly Property ResponseMarshaller As Marshaller (Of TResponse)
- Get public :
-property Marshaller <TResponse>^ ResponseMarshaller {
- Marshaller <TResponse>^ get ();
-}member ResponseMarshaller : Marshaller <'TResponse> with get
-Property Value Type:
Marshaller TResponse 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 , TResponse ServiceName 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
Syntaxpublic string ServiceName { get ; }Public ReadOnly Property ServiceName As String
- Get public :
-virtual property String ^ ServiceName {
- String ^ get () sealed ;
-}abstract ServiceName : string with get
-override ServiceName : string with get Property Value Type:
String Implements IMethod ServiceName 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 , TResponse Type Property
- Gets the type of the method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic MethodType Type { get ; }Public ReadOnly Property Type As MethodType
- Get public :
-virtual property MethodType Type {
- MethodType get () sealed ;
-}abstract Type : MethodType with get
-override Type : MethodType with get Property Value Type:
MethodType Implements IMethod Type 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 RpcException Status Property
- Resulting status of the call.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Status Status { get ; }Public ReadOnly Property Status As Status
- Get public :
-property Status Status {
- Status get ();
-}member Status : Status with 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 ServerCallContext CancellationToken Property
Cancellation token signals when call is cancelled.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic CancellationToken CancellationToken { get ; }Public ReadOnly Property CancellationToken As CancellationToken
- Get public :
-property CancellationToken CancellationToken {
- CancellationToken get ();
-}member CancellationToken : CancellationToken with 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 ServerCallContext Deadline Property
Deadline for this RPC.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic DateTime Deadline { get ; }Public ReadOnly Property Deadline As DateTime
- Get public :
-property DateTime Deadline {
- DateTime get ();
-}member Deadline : DateTime with 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 ServerCallContext Host Property
Name of host called in this RPC.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Host { get ; }Public ReadOnly Property Host As String
- Get public :
-property String ^ Host {
- String ^ get ();
-}member Host : string with 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 ServerCallContext Method Property
Name of method called in this RPC.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Method { get ; }Public ReadOnly Property Method As String
- Get public :
-property String ^ Method {
- String ^ get ();
-}member Method : string with 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 ServerCallContext Peer Property
Address of the remote endpoint in URI format.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Peer { get ; }Public ReadOnly Property Peer As String
- Get public :
-property String ^ Peer {
- String ^ get ();
-}member Peer : string with 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 ServerCallContext RequestHeaders Property
Initial metadata sent by client.
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Metadata RequestHeaders { get ; }Public ReadOnly Property RequestHeaders As Metadata
- Get public :
-property Metadata ^ RequestHeaders {
- Metadata ^ get ();
-}member RequestHeaders : Metadata with 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 ServerCallContext ResponseTrailers 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
Syntaxpublic Metadata ResponseTrailers { get ; }Public ReadOnly Property ResponseTrailers As Metadata
- Get public :
-property Metadata ^ ResponseTrailers {
- Metadata ^ get ();
-}member ResponseTrailers : Metadata with 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 ServerCallContext Status 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
Syntaxpublic Status Status { get ; set ; }Public Property Status As Status
- Get
- Set public :
-property Status Status {
- Status get ();
- void set (Status value );
-}member Status : Status with 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 ServerCallContext WriteOptions 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
Syntaxpublic WriteOptions WriteOptions { get ; set ; }Public Property WriteOptions As WriteOptions
- Get
- Set public :
-property WriteOptions ^ WriteOptions {
- WriteOptions ^ get ();
- void set (WriteOptions ^ value );
-}member WriteOptions : WriteOptions with 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 ServerCredentials Insecure 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
Syntaxpublic static ServerCredentials Insecure { get ; }Public Shared ReadOnly Property Insecure As ServerCredentials
- Get public :
-static property ServerCredentials ^ Insecure {
- ServerCredentials ^ get ();
-}static member Insecure : ServerCredentials with 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 ServerPort BoundPort 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
Syntaxpublic int BoundPort { get ; }Public ReadOnly Property BoundPort As Integer
- Get public :
-property int BoundPort {
- int get ();
-}member BoundPort : int with 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 ServerPort Credentials 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
Syntaxpublic ServerCredentials Credentials { get ; }Public ReadOnly Property Credentials As ServerCredentials
- Get public :
-property ServerCredentials ^ Credentials {
- ServerCredentials ^ get ();
-}member Credentials : ServerCredentials with 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 [Missing <summary> documentation for "P:Grpc.Core.ServerPort.Host"]
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Host { get ; }Public ReadOnly Property Host As String
- Get public :
-property String ^ Host {
- String ^ get ();
-}member Host : string with 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 [Missing <summary> documentation for "P:Grpc.Core.ServerPort.Port"]
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxPublic ReadOnly Property Port As Integer
- Get public :
-property int Port {
- int get ();
-}member Port : int with 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
- 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
Syntaxpublic Server ServerPortCollection Ports { get ; }Public ReadOnly Property Ports As Server ServerPortCollection
- Get public :
-property Server ServerPortCollection ^ Ports {
- Server ServerPortCollection ^ get ();
-}member Ports : Server ServerPortCollection with get
-Property Value Type:
Server ServerPortCollection 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
- 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
Syntaxpublic Server ServiceDefinitionCollection Services { get ; }Public ReadOnly Property Services As Server ServiceDefinitionCollection
- Get public :
-property Server ServiceDefinitionCollection ^ Services {
- Server ServiceDefinitionCollection ^ get ();
-}member Services : Server ServiceDefinitionCollection with get
-Property Value Type:
Server ServiceDefinitionCollection 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 Server ShutdownTask Property
- To allow awaiting termination of the server.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic Task ShutdownTask { get ; }Public ReadOnly Property ShutdownTask As Task
- Get public :
-property Task ^ ShutdownTask {
- Task ^ get ();
-}member ShutdownTask : Task with 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 SslCredentials KeyCertificatePair 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
Syntaxpublic KeyCertificatePair KeyCertificatePair { get ; }Public ReadOnly Property KeyCertificatePair As KeyCertificatePair
- Get public :
-property KeyCertificatePair ^ KeyCertificatePair {
- KeyCertificatePair ^ get ();
-}member KeyCertificatePair : KeyCertificatePair with 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 SslCredentials RootCertificates Property
- PEM encoding of the server root certificates.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string RootCertificates { get ; }Public ReadOnly Property RootCertificates As String
- Get public :
-property String ^ RootCertificates {
- String ^ get ();
-}member RootCertificates : string with 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 SslServerCredentials ForceClientAuthentication 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
Syntaxpublic bool ForceClientAuthentication { get ; }Public ReadOnly Property ForceClientAuthentication As Boolean
- Get public :
-property bool ForceClientAuthentication {
- bool get ();
-}member ForceClientAuthentication : bool with 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 SslServerCredentials KeyCertificatePairs Property
- Key-certificate pairs.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic IList <KeyCertificatePair > KeyCertificatePairs { get ; }Public ReadOnly Property KeyCertificatePairs As IList (Of KeyCertificatePair )
- Get public :
-property IList <KeyCertificatePair ^>^ KeyCertificatePairs {
- IList <KeyCertificatePair ^>^ get ();
-}member KeyCertificatePairs : IList <KeyCertificatePair > with get
-Property Value Type:
IList KeyCertificatePair 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 SslServerCredentials RootCertificates Property
- PEM encoded client root certificates.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string RootCertificates { get ; }Public ReadOnly Property RootCertificates As String
- Get public :
-property String ^ RootCertificates {
- String ^ get ();
-}member RootCertificates : string with 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
- Gets the detail.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic string Detail { get ; }Public ReadOnly Property Detail As String
- Get public :
-property String ^ Detail {
- String ^ get ();
-}member Detail : string with 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 Status StatusCode 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
Syntaxpublic StatusCode StatusCode { get ; }Public ReadOnly Property StatusCode As StatusCode
- Get public :
-property StatusCode StatusCode {
- StatusCode get ();
-}member StatusCode : StatusCode with 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 WriteOptions Flags Property
- Gets the write flags.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic WriteFlags Flags { get ; }Public ReadOnly Property Flags As WriteFlags
- Get public :
-property WriteFlags Flags {
- WriteFlags get ();
-}member Flags : WriteFlags with 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 AsyncClientStreamingCallTRequest , TResponse Properties
The AsyncClientStreamingCall TRequest, TResponse generic type exposes the following members.
Properties See Also
\ 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 AsyncDuplexStreamingCallTRequest , TResponse Properties
The AsyncDuplexStreamingCall TRequest, TResponse generic type exposes the following members.
Properties See Also
\ 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 AsyncServerStreamingCallTResponse Properties
The AsyncServerStreamingCall TResponse generic type exposes the following members.
Properties See Also
\ 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 AsyncUnaryCallTResponse Properties
The AsyncUnaryCall TResponse generic type exposes the following members.
Properties See Also
\ 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 CallInvocationDetails TRequest, TResponse generic type exposes the following members.
Properties
-
- Name Description Channel
- Get channel associated with this call.
-
Host
- Get name of host.
-
Method
- Gets name of method to be called.
-
Options
- Gets the call options.
-
RequestMarshaller
- Gets marshaller used to serialize requests.
-
ResponseMarshaller
- 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 The CallOptions type exposes the following members.
Properties 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 The Channel type exposes the following members.
Properties
-
- Name Description ResolvedTarget Resolved address of the remote endpoint in URI format.
State
- Gets current connectivity state of this channel.
-
Target 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 The ChannelOption type exposes the following members.
Properties
-
- Name Description IntValue
- Gets the integer value the ChannelOption .
-
Name
- Gets the name of the ChannelOption .
-
StringValue
- Gets the string value the ChannelOption .
-
Type
- 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 The ClientBase type exposes the following members.
Properties
-
- Name Description Channel
- Channel associated with this client.
-
HeaderInterceptor
- 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.
-
Host
- 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 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
\ 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
\ 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
\ 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 IAsyncStreamWriter T generic type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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 IClientStreamWriter T generic type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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 IAsyncStreamWriter T .)
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 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 The IMethod type exposes the following members.
Properties
-
- Name Description FullName
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
Name
- Gets the unqualified name of the method.
-
ServiceName
- Gets the name of the service to which this method belongs.
-
Type
- 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 IServerStreamWriter T generic type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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 IAsyncStreamWriter T .)
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 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 The Marshaller T generic type exposes the following members.
Properties 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
\ 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 The Metadata type exposes the following members.
Properties See Also
\ 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 The Metadata Entry type exposes the following members.
Properties
-
- Name Description IsBinary
- Returns true if this entry is a binary-value entry.
-
Key
- Gets the metadata entry key.
-
Value
- Gets the string value of this metadata entry.
-
ValueBytes
- 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 Method TRequest, TResponse generic type exposes the following members.
Properties
-
- Name Description FullName
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
Name
- Gets the unqualified name of the method.
-
RequestMarshaller
- Gets the marshaller used for request messages.
-
ResponseMarshaller
- Gets the marshaller used for response messages.
-
ServiceName
- Gets the name of the service to which this method belongs.
-
Type
- 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 The RpcException type exposes the following members.
Properties
-
- Name Description Data Gets a collection of key/value pairs that provide additional user-defined information about the exception.
(Inherited from Exception .)HelpLink Gets or sets a link to the help file associated with this exception.
(Inherited from Exception .)HResult Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.
(Inherited from Exception .)InnerException Gets the
Exception instance that caused the current exception.
(Inherited from Exception .)Message Gets a message that describes the current exception.
(Inherited from Exception .)Source Gets or sets the name of the application or the object that causes the error.
(Inherited from Exception .)StackTrace Gets a string representation of the immediate frames on the call stack.
(Inherited from Exception .)Status
- Resulting status of the call.
-
TargetSite 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 The Server type exposes the following members.
Properties
-
- Name Description Ports
- Ports on which the server will listen once started. Register a port with this
- server by adding its definition to this collection.
-
Services
- Services that will be exported by the server once started. Register a service with this
- server by adding its definition to this collection.
-
ShutdownTask
- 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
-
- Name Description CancellationToken Cancellation token signals when call is cancelled.
Deadline Deadline for this RPC.
Host Name of host called in this RPC.
Method Name of method called in this RPC.
Peer Address of the remote endpoint in URI format.
RequestHeaders Initial metadata sent by client.
ResponseTrailers Trailers to send back to client after RPC finishes.
Status Status to send back to client after RPC finishes.
WriteOptions
- 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
\ 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 The ServerPort type exposes the following members.
Properties See Also
\ 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
-
- Name Description KeyCertificatePair
- Client side key and certificate pair.
- If null, client will not use key and certificate pair.
-
RootCertificates
- 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 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 The Status type exposes the following members.
Properties
-
- Name Description Detail
- Gets the detail.
-
StatusCode
- 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 The WriteOptions type exposes the following members.
Properties
-
- Name Description Flags
- 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 NamespacesNamespace Description 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
- Factory methods to create authorization interceptors. Interceptors created can be registered with gRPC client classes (autogenerated client stubs that
- inherit from
ClientBase ).
-
Inheritance Hierarchy
Namespace: Grpc.Auth Assembly: Grpc.Auth (in Grpc.Auth.dll) Version: 0.7.0.0
Syntaxpublic static class AuthInterceptors Public NotInheritable Class AuthInterceptors public ref class AuthInterceptors abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type AuthInterceptors = class end The AuthInterceptors 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_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 HierarchySystem Object Grpc.Core AsyncClientStreamingCall TRequest, TResponse
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class AsyncClientStreamingCall <TRequest, TResponse> : IDisposable
-Public NotInheritable Class AsyncClientStreamingCall (Of TRequest, TResponse)
- Implements IDisposable generic <typename TRequest, typename TResponse>
-public ref class AsyncClientStreamingCall sealed : IDisposable [<SealedAttribute >]
-type AsyncClientStreamingCall <'TRequest, 'TResponse> =
- class
- interface IDisposable
- end Type Parameters TRequest Request message type for this call. TResponse Response message type for this call. The AsyncClientStreamingCall TRequest, TResponse type exposes the following members.
Properties Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetAwaiter
- Allows awaiting this object directly.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 HierarchySystem Object Grpc.Core AsyncDuplexStreamingCall TRequest, TResponse
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class AsyncDuplexStreamingCall <TRequest, TResponse> : IDisposable
-Public NotInheritable Class AsyncDuplexStreamingCall (Of TRequest, TResponse)
- Implements IDisposable generic <typename TRequest, typename TResponse>
-public ref class AsyncDuplexStreamingCall sealed : IDisposable [<SealedAttribute >]
-type AsyncDuplexStreamingCall <'TRequest, 'TResponse> =
- class
- interface IDisposable
- end Type Parameters TRequest Request message type for this call. TResponse Response message type for this call. The AsyncDuplexStreamingCall TRequest, TResponse type exposes the following members.
Properties Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class AsyncServerStreamingCall <TResponse> : IDisposable
-Public NotInheritable Class AsyncServerStreamingCall (Of TResponse)
- Implements IDisposable generic <typename TResponse>
-public ref class AsyncServerStreamingCall sealed : IDisposable [<SealedAttribute >]
-type AsyncServerStreamingCall <'TResponse> =
- class
- interface IDisposable
- end Type Parameters TResponse Response message type for this call. The AsyncServerStreamingCall TResponse type exposes the following members.
Properties Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class AsyncUnaryCall <TResponse> : IDisposable
-Public NotInheritable Class AsyncUnaryCall (Of TResponse)
- Implements IDisposable generic <typename TResponse>
-public ref class AsyncUnaryCall sealed : IDisposable [<SealedAttribute >]
-type AsyncUnaryCall <'TResponse> =
- class
- interface IDisposable
- end Type Parameters TResponse Response message type for this call. The AsyncUnaryCall TResponse type exposes the following members.
Properties Methods
-
- Name Description Dispose
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetAwaiter
- Allows awaiting this object directly.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetStatus
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetTrailers
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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
Syntaxpublic struct CallInvocationDetails <TRequest, TResponse>
-Public Structure CallInvocationDetails (Of TRequest, TResponse)generic <typename TRequest, typename TResponse>
-public value class CallInvocationDetails [<SealedAttribute >]
-type CallInvocationDetails <'TRequest, 'TResponse> = struct end Type Parameters TRequest Request message type for the call. TResponse Response message type for the call. The CallInvocationDetails TRequest, TResponse type exposes the following members.
Constructors
-
- Name Description CallInvocationDetails TRequest, TResponse (Channel, Method TRequest, TResponse , CallOptions)
- Initializes a new instance of the CallInvocationDetails TRequest, TResponse struct.
-
CallInvocationDetails TRequest, TResponse (Channel, Method TRequest, TResponse , String, CallOptions)
- Initializes a new instance of the CallInvocationDetails TRequest, TResponse struct.
-
CallInvocationDetails TRequest, TResponse (Channel, String, String, Marshaller TRequest , Marshaller TResponse , CallOptions)
- Initializes a new instance of the CallInvocationDetails TRequest, TResponse struct.
-
Top Properties
-
- Name Description Channel
- Get channel associated with this call.
-
Host
- Get name of host.
-
Method
- Gets name of method to be called.
-
Options
- Gets the call options.
-
RequestMarshaller
- Gets marshaller used to serialize requests.
-
ResponseMarshaller
- Gets marshaller used to deserialized responses.
-
Top Methods
-
- Name Description Equals Indicates whether this instance and a specified object are equal.
(Inherited from ValueType .)GetHashCode Returns the hash code for this instance.
(Inherited from ValueType .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString Returns the fully qualified type name of this instance.
(Inherited from ValueType .)WithOptions
- Returns new instance of CallInvocationDetails TRequest, 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
- Options for calls made by client.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic struct CallOptions Public Structure CallOptions public value class CallOptions [<SealedAttribute >]
-type CallOptions = struct end The CallOptions type exposes the following members.
Constructors
-
- Name Description CallOptions
- Creates a new instance of CallOptions struct.
-
Top Properties Methods
-
- Name Description Equals Indicates whether this instance and a specified object are equal.
(Inherited from ValueType .)GetHashCode Returns the hash code for this instance.
(Inherited from ValueType .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString Returns the fully qualified type name of this instance.
(Inherited from ValueType .)WithCancellationToken
- Returns new instance of CallOptions with
- CancellationToken set to the value provided. Values of all other fields are preserved.
-
WithDeadline
- Returns new instance of CallOptions with
- Deadline set to the value provided. Values of all other fields are preserved.
-
WithHeaders
- 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
- 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class Calls Public NotInheritable Class Calls public ref class Calls abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type Calls = class end The Calls 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_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
- 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxThe Channel type exposes the following members.
Constructors Properties
-
- Name Description ResolvedTarget Resolved address of the remote endpoint in URI format.
State
- Gets current connectivity state of this channel.
-
Target The original target used to create the channel.
Top Methods
-
- Name Description ConnectAsync
- 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.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ShutdownAsync
- Waits until there are no more active calls for this channel and then cleans up
- resources used by this channel.
-
ToString Returns a string that represents the current object.
(Inherited from Object .)WaitForStateChangedAsync
- 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
- Channel option specified when creating a channel.
- Corresponds to grpc_channel_args from grpc/grpc.h.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class ChannelOption Public NotInheritable Class ChannelOption public ref class ChannelOption sealed [<SealedAttribute >]
-type ChannelOption = class end The ChannelOption type exposes the following members.
Constructors Properties
-
- Name Description IntValue
- Gets the integer value the ChannelOption .
-
Name
- Gets the name of the ChannelOption .
-
StringValue
- Gets the string value the ChannelOption .
-
Type
- Gets the type of the ChannelOption .
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 ChannelOption OptionType Enumeration
- Type of ChannelOption .
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxPublic Enumeration OptionType public enum class OptionType Members
-
- Member name Value Description Integer 0
- Channel option with integer value.
- String 1
- 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
- Defines names of supported channel options.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class ChannelOptions Public NotInheritable Class ChannelOptions public ref class ChannelOptions abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type ChannelOptions = class end The ChannelOptions type exposes the following members.
Fields 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
- 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
SyntaxPublic Enumeration ChannelState public enum class ChannelState Members
-
- Member name Value Description Idle 0
- Channel is idle
- Connecting 1
- Channel is connecting
- Ready 2
- Channel is ready for work
- TransientFailure 3
- Channel has seen a failure but expects to recover
- FatalFailure 4
- 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
- Base class for client-side stubs.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic abstract class ClientBase Public MustInherit Class ClientBase public ref class ClientBase abstract [<AbstractClassAttribute >]
-type ClientBase = class end The ClientBase type exposes the following members.
Constructors
-
- Name Description ClientBase
- Initializes a new instance of ClientBase class.
-
Top Properties
-
- Name Description Channel
- Channel associated with this client.
-
HeaderInterceptor
- 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.
-
Host
- 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 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
Syntaxpublic delegate Task <TResponse> ClientStreamingServerMethod <TRequest, TResponse>(
- IAsyncStreamReader <TRequest> requestStream ,
- ServerCallContext context
-)
-where TRequest : class
-where TResponse : class
-Public Delegate Function ClientStreamingServerMethod (Of TRequest As Class , TResponse As Class ) (
- requestStream As IAsyncStreamReader (Of TRequest),
- context As ServerCallContext
-) As Task (Of TResponse)generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-public delegate Task <TResponse>^ ClientStreamingServerMethod (
- IAsyncStreamReader <TRequest>^ requestStream ,
- ServerCallContext ^ context
-)type ClientStreamingServerMethod =
- delegate of
- requestStream : IAsyncStreamReader <'TRequest> *
- context : ServerCallContext -> Task <'TResponse>Parameters requestStream Type: Grpc.Core IAsyncStreamReader TRequest context Type: Grpc.Core ServerCallContext Type Parameters TRequest Request message type for this method. TResponse Response message type for this method. Return Value Type:
Task TResponse 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
Syntaxpublic enum CompressionLevel Public Enumeration CompressionLevel public enum class CompressionLevel Members
-
- Member name Value Description None 0
- No compression.
- Low 1
- Low compression.
- Medium 2
- Medium compression.
- High 3
- 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
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ContextPropagationOptions Public Class ContextPropagationOptions public ref class ContextPropagationOptions type ContextPropagationOptions = class end The ContextPropagationOptions type exposes the following members.
Constructors Properties Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Returns a string that represents the current object.
(Inherited from Object .)
Top Fields
-
- Name Description Default
- 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ContextPropagationToken Public Class ContextPropagationToken public ref class ContextPropagationToken type ContextPropagationToken = class end The ContextPropagationToken type exposes the following members.
Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
- 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
Syntaxpublic abstract class Credentials Public MustInherit Class Credentials public ref class Credentials abstract [<AbstractClassAttribute >]
-type Credentials = class end The Credentials type exposes the following members.
Constructors
-
- Name Description Credentials Initializes a new instance of the Credentials class
Top Properties
-
- Name Description Insecure
- Returns instance of credential that provides no security and
- will result in creating an unsecure channel with no encryption whatsoever.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
Syntaxpublic delegate Task DuplexStreamingServerMethod <TRequest, TResponse>(
- IAsyncStreamReader <TRequest> requestStream ,
- IServerStreamWriter <TResponse> responseStream ,
- ServerCallContext context
-)
-where TRequest : class
-where TResponse : class
-Public Delegate Function DuplexStreamingServerMethod (Of TRequest As Class , TResponse As Class ) (
- requestStream As IAsyncStreamReader (Of TRequest),
- responseStream As IServerStreamWriter (Of TResponse),
- context As ServerCallContext
-) As Task generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-public delegate Task ^ DuplexStreamingServerMethod (
- IAsyncStreamReader <TRequest>^ requestStream ,
- IServerStreamWriter <TResponse>^ responseStream ,
- ServerCallContext ^ context
-)type DuplexStreamingServerMethod =
- delegate of
- requestStream : IAsyncStreamReader <'TRequest> *
- responseStream : IServerStreamWriter <'TResponse> *
- context : ServerCallContext -> Task Parameters requestStream Type: Grpc.Core IAsyncStreamReader TRequest responseStream Type: Grpc.Core IServerStreamWriter TResponse context Type: Grpc.Core ServerCallContext 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
- Encapsulates initialization and shutdown of gRPC library.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class GrpcEnvironment Public Class GrpcEnvironment public ref class GrpcEnvironment type GrpcEnvironment = class end The GrpcEnvironment type exposes the following members.
Properties
-
- Name Description Logger
- Gets application-wide logger used by gRPC.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)SetLogger
- Sets the application-wide logger that should be used by gRPC.
-
ToString 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
Syntaxpublic delegate void HeaderInterceptor (
- IMethod method ,
- string authUri ,
- Metadata metadata
-)Public Delegate Sub HeaderInterceptor (
- method As IMethod ,
- authUri As String ,
- metadata As Metadata
-)public delegate void HeaderInterceptor (
- IMethod ^ method ,
- String ^ authUri ,
- Metadata ^ metadata
-)type HeaderInterceptor =
- delegate of
- method : IMethod *
- authUri : string *
- metadata : Metadata -> unit Parameters method Type: Grpc.Core IMethod authUri Type: System String metadata Type: Grpc.Core Metadata 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
\ 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
Syntaxpublic interface IAsyncStreamWriter <T>
-Public Interface IAsyncStreamWriter (Of T)generic <typename T>
-public interface class IAsyncStreamWriter type IAsyncStreamWriter <'T> = interface end Type Parameters T The message type. The IAsyncStreamWriter T type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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
-
- Name Description WriteAsync
- 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
Syntaxpublic interface IClientStreamWriter <T> : IAsyncStreamWriter <T>
-Public Interface IClientStreamWriter (Of T)
- Inherits IAsyncStreamWriter (Of T)generic <typename T>
-public interface class IClientStreamWriter : IAsyncStreamWriter <T>type IClientStreamWriter <'T> =
- interface
- interface IAsyncStreamWriter <'T>
- end Type Parameters T The message type. The IClientStreamWriter T type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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 IAsyncStreamWriter T .)
Top Methods
-
- Name Description CompleteAsync
- Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this.
-
WriteAsync
- Writes a single asynchronously. Only one write can be pending at a time.
-
(Inherited from IAsyncStreamWriter T .)
Top Extension Methods 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
Syntaxpublic interface IHasWriteOptions Public Interface IHasWriteOptions public interface class IHasWriteOptions type IHasWriteOptions = interface end The IHasWriteOptions type exposes the following members.
Properties 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
- A non-generic representation of a remote method.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic interface class IMethod type IMethod = interface end The IMethod type exposes the following members.
Properties
-
- Name Description FullName
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
Name
- Gets the unqualified name of the method.
-
ServiceName
- Gets the name of the service to which this method belongs.
-
Type
- 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
Syntaxpublic interface IServerStreamWriter <T> : IAsyncStreamWriter <T>
-Public Interface IServerStreamWriter (Of T)
- Inherits IAsyncStreamWriter (Of T)generic <typename T>
-public interface class IServerStreamWriter : IAsyncStreamWriter <T>type IServerStreamWriter <'T> =
- interface
- interface IAsyncStreamWriter <'T>
- end Type Parameters T [Missing <typeparam name="T"/> documentation for "T:Grpc.Core.IServerStreamWriter`1"]
The IServerStreamWriter T type exposes the following members.
Properties
-
- Name Description WriteOptions
- 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 IAsyncStreamWriter T .)
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
- Key certificate pair (in PEM encoding).
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class KeyCertificatePair Public NotInheritable Class KeyCertificatePair public ref class KeyCertificatePair sealed [<SealedAttribute >]
-type KeyCertificatePair = class end The KeyCertificatePair type exposes the following members.
Constructors Properties Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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 Logger that logs to System.Console.
Inheritance Hierarchy
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ConsoleLogger : ILogger Public Class ConsoleLogger
- Implements ILogger public ref class ConsoleLogger : ILogger type ConsoleLogger =
- class
- interface ILogger
- end The ConsoleLogger type exposes the following members.
Constructors
-
- Name Description ConsoleLogger Creates a console logger not associated to any specific type.
Top Methods 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 For logging messages.
Namespace: Grpc.Core.Logging Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic interface class ILogger type ILogger = interface end 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
- Encapsulates the logic for serializing and deserializing messages.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class Marshaller <T>
-Public Class Marshaller (Of T)generic <typename T>
-public ref class Marshaller type Marshaller <'T> = class end Type Parameters T [Missing <typeparam name="T"/> documentation for "T:Grpc.Core.Marshaller`1"]
The Marshaller T type exposes the following members.
Constructors Properties Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
\ 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
\ 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
- Metadata entry
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntax[<SealedAttribute >]
-type Entry = struct end The Metadata Entry type exposes the following members.
Constructors Properties
-
- Name Description IsBinary
- Returns true if this entry is a binary-value entry.
-
Key
- Gets the metadata entry key.
-
Value
- Gets the string value of this metadata entry.
-
ValueBytes
- Gets the binary value of this metadata entry.
-
Top Methods 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
- Method types supported by gRPC.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxPublic Enumeration MethodType public enum class MethodType Members
-
- Member name Value Description Unary 0 Single request sent from client, single response received from server. ClientStreaming 1 Stream of request sent from client, single response received from server. ServerStreaming 2 Single request sent from client, stream of responses received from server. DuplexStreaming 3 Both 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class Method <TRequest, TResponse> : IMethod
-Public Class Method (Of TRequest, TResponse)
- Implements IMethod generic <typename TRequest, typename TResponse>
-public ref class Method : IMethod type Method <'TRequest, 'TResponse> =
- class
- interface IMethod
- end Type Parameters TRequest Request message type for this method. TResponse Response message type for this method. The Method TRequest, TResponse type exposes the following members.
Constructors Properties
-
- Name Description FullName
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
Name
- Gets the unqualified name of the method.
-
RequestMarshaller
- Gets the marshaller used for request messages.
-
ResponseMarshaller
- Gets the marshaller used for response messages.
-
ServiceName
- Gets the name of the service to which this method belongs.
-
Type
- Gets the type of the method.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
- 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
Syntaxpublic class RpcException : Exception Public Class RpcException
- Inherits Exception public ref class RpcException : public Exception type RpcException =
- class
- inherit Exception
- end The RpcException type exposes the following members.
Constructors Properties
-
- Name Description Data Gets a collection of key/value pairs that provide additional user-defined information about the exception.
(Inherited from Exception .)HelpLink Gets or sets a link to the help file associated with this exception.
(Inherited from Exception .)HResult Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.
(Inherited from Exception .)InnerException Gets the
Exception instance that caused the current exception.
(Inherited from Exception .)Message Gets a message that describes the current exception.
(Inherited from Exception .)Source Gets or sets the name of the application or the object that causes the error.
(Inherited from Exception .)StackTrace Gets a string representation of the immediate frames on the call stack.
(Inherited from Exception .)Status
- Resulting status of the call.
-
TargetSite Gets the method that throws the current exception.
(Inherited from Exception .)
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetBaseException When overridden in a derived class, returns the
Exception that is the root cause of one or more subsequent exceptions.
(Inherited from Exception .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetObjectData When overridden in a derived class, sets the
SerializationInfo with information about the exception.
(Inherited from Exception .)GetType Gets the runtime type of the current instance.
(Inherited from Exception .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Creates and returns a string representation of the current exception.
(Inherited from Exception .)
Top Events
-
- Name Description SerializeObjectState 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
- gRPC server. A single server can server arbitrary number of services and can listen on more than one ports.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxThe Server type exposes the following members.
Constructors
-
- Name Description Server
- Create a new server.
-
Top Properties
-
- Name Description Ports
- Ports on which the server will listen once started. Register a port with this
- server by adding its definition to this collection.
-
Services
- Services that will be exported by the server once started. Register a service with this
- server by adding its definition to this collection.
-
ShutdownTask
- To allow awaiting termination of the server.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)KillAsync
- Requests server shutdown while cancelling all the in-progress calls.
- The returned task finishes when shutdown procedure is complete.
-
MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ShutdownAsync
- 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.
-
Start
- Starts the server.
-
ToString 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
- Context for a server-side call.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ServerCallContext Public Class ServerCallContext public ref class ServerCallContext type ServerCallContext = class end The ServerCallContext type exposes the following members.
Properties
-
- Name Description CancellationToken Cancellation token signals when call is cancelled.
Deadline Deadline for this RPC.
Host Name of host called in this RPC.
Method Name of method called in this RPC.
Peer Address of the remote endpoint in URI format.
RequestHeaders Initial metadata sent by client.
ResponseTrailers Trailers to send back to client after RPC finishes.
Status Status to send back to client after RPC finishes.
WriteOptions
- 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
-
- Name Description CreatePropagationToken
- Creates a propagation token to be used to propagate call context to a child call.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Returns a string that represents the current object.
(Inherited from Object .)WriteResponseHeadersAsync
- 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
- Server side credentials.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic abstract class ServerCredentials Public MustInherit Class ServerCredentials public ref class ServerCredentials abstract [<AbstractClassAttribute >]
-type ServerCredentials = class end The ServerCredentials type exposes the following members.
Constructors Properties
-
- Name Description Insecure
- Returns instance of credential that provides no security and
- will result in creating an unsecure server port with no encryption whatsoever.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
- A port exposed by a server.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic ref class ServerPort type ServerPort = class end The ServerPort type exposes the following members.
Constructors
-
- Name Description ServerPort
- Creates a new port on which server should listen.
-
Top Properties Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Returns a string that represents the current object.
(Inherited from Object .)
Top Fields
-
- Name Description PickUnused
- 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
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ServerServiceDefinition Public Class ServerServiceDefinition public ref class ServerServiceDefinition type ServerServiceDefinition = class end The ServerServiceDefinition type exposes the following members.
Methods
-
- Name Description CreateBuilder
- Creates a new builder object for ServerServiceDefinition .
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 ServerServiceDefinition Builder Class
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
SyntaxThe ServerServiceDefinition Builder type exposes the following members.
Constructors Methods
-
- Name Description AddMethod TRequest, TResponse (Method TRequest, TResponse , ClientStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a client streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , DuplexStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a bidirectional streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , ServerStreamingServerMethod TRequest, TResponse )
- Adds a definitions for a server streaming method.
-
AddMethod TRequest, TResponse (Method TRequest, TResponse , UnaryServerMethod TRequest, TResponse )
- Adds a definitions for a single request - single response method.
-
Build
- Creates an immutable ServerServiceDefinition from this builder.
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
Syntaxpublic delegate Task ServerStreamingServerMethod <TRequest, TResponse>(
- TRequest request ,
- IServerStreamWriter <TResponse> responseStream ,
- ServerCallContext context
-)
-where TRequest : class
-where TResponse : class
-Public Delegate Function ServerStreamingServerMethod (Of TRequest As Class , TResponse As Class ) (
- request As TRequest,
- responseStream As IServerStreamWriter (Of TResponse),
- context As ServerCallContext
-) As Task generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-public delegate Task ^ ServerStreamingServerMethod (
- TRequest request ,
- IServerStreamWriter <TResponse>^ responseStream ,
- ServerCallContext ^ context
-)type ServerStreamingServerMethod =
- delegate of
- request : 'TRequest *
- responseStream : IServerStreamWriter <'TResponse> *
- context : ServerCallContext -> Task Parameters request Type: TRequest responseStream Type: Grpc.Core IServerStreamWriter TResponse context Type: Grpc.Core ServerCallContext 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 Server ServerPortCollection Class
- Collection of server ports.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ServerPortCollection : IEnumerable <ServerPort >,
- IEnumerable Public Class ServerPortCollection
- Implements IEnumerable (Of ServerPort ), IEnumerable public ref class ServerPortCollection : IEnumerable <ServerPort ^>,
- IEnumerable type ServerPortCollection =
- class
- interface IEnumerable <ServerPort >
- interface IEnumerable
- end The Server ServerPortCollection type exposes the following members.
Methods
-
- Name Description Add(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.Add(String, Int32, ServerCredentials)
- Adds a new port on which server should listen.
-
Return Value Type: The port on which server will be listening.Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetEnumerator
- Gets enumerator for this collection.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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 Server ServiceDefinitionCollection Class
- Collection of service definitions.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class ServiceDefinitionCollection : IEnumerable <ServerServiceDefinition >,
- IEnumerable Public Class ServiceDefinitionCollection
- Implements IEnumerable (Of ServerServiceDefinition ), IEnumerable public ref class ServiceDefinitionCollection : IEnumerable <ServerServiceDefinition ^>,
- IEnumerable type ServiceDefinitionCollection =
- class
- interface IEnumerable <ServerServiceDefinition >
- interface IEnumerable
- end The Server ServiceDefinitionCollection type exposes the following members.
Methods
-
- Name Description Add
- Adds a service definition to the server. This is how you register
- handlers for a service with the server. Only call this before Start().
-
Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetEnumerator
- Gets enumerator for this collection.
-
GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
- Client-side SSL credentials.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic sealed class SslCredentials : Credentials Public NotInheritable Class SslCredentials
- Inherits Credentials public ref class SslCredentials sealed : public Credentials [<SealedAttribute >]
-type SslCredentials =
- class
- inherit Credentials
- end The SslCredentials type exposes the following members.
Constructors
-
- Name Description SslCredentials
- 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.
-
SslCredentials(String)
- Creates client-side SSL credentials from
- a string containing PEM encoded root certificates.
-
SslCredentials(String, KeyCertificatePair)
- Creates client-side SSL credentials.
-
Top Properties
-
- Name Description KeyCertificatePair
- Client side key and certificate pair.
- If null, client will not use key and certificate pair.
-
RootCertificates
- PEM encoding of the server root certificates.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)ToString 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
Syntaxpublic class SslServerCredentials : ServerCredentials Public Class SslServerCredentials
- Inherits ServerCredentials public ref class SslServerCredentials : public ServerCredentials type SslServerCredentials =
- class
- inherit ServerCredentials
- end The SslServerCredentials type exposes the following members.
Constructors Properties Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString 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
- 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
Syntaxpublic value class Status [<SealedAttribute >]
-type Status = struct end The Status type exposes the following members.
Constructors
-
- Name Description Status
- Creates a new instance of Status .
-
Top Properties
-
- Name Description Detail
- Gets the detail.
-
StatusCode
- Gets the gRPC status code. OK indicates success, all other values indicate an error.
-
Top Methods Fields 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
- 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
SyntaxPublic Enumeration StatusCode public enum class StatusCode Members
-
- Member name Value Description OK 0 Not an error; returned on success. Cancelled 1 The operation was cancelled (typically by the caller). Unknown 2
- 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.
- InvalidArgument 3
- 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).
- DeadlineExceeded 4
- 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.
- NotFound 5 Some requested entity (e.g., file or directory) was not found. AlreadyExists 6 Some entity that we attempted to create (e.g., file or directory) already exists. PermissionDenied 7
- 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).
- Unauthenticated 16 The request does not have valid authentication credentials for the operation. ResourceExhausted 8
- Some resource has been exhausted, perhaps a per-user quota, or
- perhaps the entire file system is out of space.
- FailedPrecondition 9
- 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.
- Aborted 10
- The operation was aborted, typically due to a concurrency issue
- like sequencer check failures, transaction aborts, etc.
- OutOfRange 11
- Operation was attempted past the valid range. E.g., seeking or
- reading past end of file.
- Unimplemented 12 Operation is not implemented or not supported/enabled in this service. Internal 13
- Internal errors. Means some invariants expected by underlying
- system has been broken. If you see one of these errors,
- something is very broken.
- Unavailable 14
- The service is currently unavailable. This is a most likely a
- transient condition and may be corrected by retrying with
- a backoff.
- DataLoss 15 Unrecoverable 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
Syntaxpublic delegate Task <TResponse> UnaryServerMethod <TRequest, TResponse>(
- TRequest request ,
- ServerCallContext context
-)
-where TRequest : class
-where TResponse : class
-Public Delegate Function UnaryServerMethod (Of TRequest As Class , TResponse As Class ) (
- request As TRequest,
- context As ServerCallContext
-) As Task (Of TResponse)generic <typename TRequest, typename TResponse>
-where TRequest : ref class
-where TResponse : ref class
-public delegate Task <TResponse>^ UnaryServerMethod (
- TRequest request ,
- ServerCallContext ^ context
-)type UnaryServerMethod =
- delegate of
- request : 'TRequest *
- context : ServerCallContext -> Task <'TResponse>Parameters request Type: TRequest context Type: Grpc.Core ServerCallContext Type Parameters TRequest Request message type for this method. TResponse Response message type for this method. Return Value Type:
Task TResponse 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
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class AsyncStreamExtensions <ExtensionAttribute >
-Public NotInheritable Class AsyncStreamExtensions [ExtensionAttribute ]
-public ref class AsyncStreamExtensions abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-[<ExtensionAttribute >]
-type AsyncStreamExtensions = class end The AsyncStreamExtensions 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_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
- Utility methods to run microbenchmarks.
-
Inheritance Hierarchy
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class BenchmarkUtil Public NotInheritable Class BenchmarkUtil public ref class BenchmarkUtil abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type BenchmarkUtil = class end The BenchmarkUtil type exposes the following members.
Methods
-
- Name Description RunBenchmark
- 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
- Utility methods to simplify checking preconditions in the code.
-
Inheritance Hierarchy
Namespace: Grpc.Core.Utils Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class Preconditions Public NotInheritable Class Preconditions public ref class Preconditions abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type Preconditions = class end 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
- Provides info about current version of gRPC.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic static class VersionInfo Public NotInheritable Class VersionInfo public ref class VersionInfo abstract sealed [<AbstractClassAttribute >]
-[<SealedAttribute >]
-type VersionInfo = class end The VersionInfo type exposes the following members.
Fields 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
- Flags for write operations.
-
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntax[FlagsAttribute ]
-public enum WriteFlags <FlagsAttribute >
-Public Enumeration WriteFlags [FlagsAttribute ]
-public enum class WriteFlags [<FlagsAttribute >]
-type WriteFlags Members
-
- Member name Value Description BufferHint 1
- 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.
- NoCompress 2
- 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
- Options for write operations.
-
Inheritance Hierarchy
Namespace: Grpc.Core Assembly: Grpc.Core (in Grpc.Core.dll) Version: 0.7.0.0
Syntaxpublic class WriteOptions Public Class WriteOptions public ref class WriteOptions type WriteOptions = class end The WriteOptions type exposes the following members.
Constructors
-
- Name Description WriteOptions
- Initializes a new instance of WriteOptions class.
-
Top Properties
-
- Name Description Flags
- Gets the write flags.
-
Top Methods
-
- Name Description Equals Determines whether the specified object is equal to the current object.
(Inherited from Object .)Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object .)GetHashCode Serves as the default hash function.
(Inherited from Object .)GetType Gets the
Type of the current instance.
(Inherited from Object .)MemberwiseClone Creates a shallow copy of the current
Object .
(Inherited from Object .)ToString Returns a string that represents the current object.
(Inherited from Object .)
Top Fields
-
- Name Description Default
- 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&nehQ1i
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+PMR(x9~dru}CZtchYt(`bXChH?klF63s+SEg^
zvsxj;n1VT(Og8tCUOoJ69Ax&gS$_TTf1)_IhyU})mU&r?kl{tw=X>}|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`HgjU61Kc9++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>#39XfGwH^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`DWT9hkzICOvb-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<6HlvnK%)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 = "";
-
- 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 += "" +
- rankings[r].PageTitle + " ";
-
- 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>$2>")+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>$2>");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("")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" a ",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="
",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" a ",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" a ",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
-},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();ca ",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/doc/ref/csharp/html/search.html b/doc/ref/csharp/html/search.html
deleted file mode 100644
index 296a4d29da4..00000000000
--- a/doc/ref/csharp/html/search.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
gRPC C# - Search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sort by title
-
-
-
-
-
- Back
-
-
-
-
diff --git a/doc/ref/csharp/html/styles/branding-Help1.css b/doc/ref/csharp/html/styles/branding-Help1.css
deleted file mode 100644
index 8f7ba25a3ba..00000000000
--- a/doc/ref/csharp/html/styles/branding-Help1.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Define the userData cache persistence mechanism for Help 1 files */
-.userDataStyle {
- behavior: url(#default#userdata);
-}
-
-/* Style adjustments for Help 1 */
-.pageBody {
- padding-top: 0px 20px 0px 0px;
-}
-
-table {
- width: 95%;
- padding-right: 20px;
-}
-
-table.members {
- width: 95%;
- padding-right: 20px;
-}
-
-th p {
- padding-bottom: 0px;
-}
-
-td p {
- padding-bottom: 5px;
-}
-
-.codeSnippetContainerTabs {
- top: 1px;
-}
-
-.codeSnippetToolBarText {
- top: -13px;
-}
-
-.codeSnippetContainerTabSingle {
- padding: 2px 15px 0px 15px;
- height: 22px;
-}
diff --git a/doc/ref/csharp/html/styles/branding-HelpViewer.css b/doc/ref/csharp/html/styles/branding-HelpViewer.css
deleted file mode 100644
index 951621be660..00000000000
--- a/doc/ref/csharp/html/styles/branding-HelpViewer.css
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Style adjustments for Help Viewer */
-.pageBody {
- padding-top: 0px 20px 0px 0px;
-}
-
-table {
- width: 95%;
- padding-right: 20px;
-}
-
-table.members {
- width: 95%;
- padding-right: 20px;
-}
-
-th p {
- padding-bottom: 0px;
-}
-
-td p {
- padding-bottom: 5px;
-}
-
-.codeSnippetContainerTabs {
- top: 1px;
-}
-
-.codeSnippetToolBarText {
- top: -13px;
-}
-
-.codeSnippetContainerTabSingle {
- padding: 2px 15px 0px 15px;
- height: 22px;
-}
-
-.codeSnippetContainerTab a:visited {
- color: #000000;
-}
-
-.codeSnippetContainerTabActive a:visited {
- color: #000000;
-}
-
-span.keyword {
- color: #0000ff;
- font-weight: normal;
-}
diff --git a/doc/ref/csharp/html/styles/branding-Website.css b/doc/ref/csharp/html/styles/branding-Website.css
deleted file mode 100644
index d39e08c771d..00000000000
--- a/doc/ref/csharp/html/styles/branding-Website.css
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Style adjustments for websites */
-.pageBody {
- padding: 0px 20px 0px 0px;
-}
-.topicContent {
- margin-left: 280px;
-}
-
-/* Lightweight TOC */
-.tocCollapsed {
- background: url('../icons/TocCollapsed.gif') no-repeat scroll center;
- width: 17px;
- height: 20px;
- overflow: hidden;
-}
-.tocExpanded {
- background: url('../icons/TocExpanded.gif') no-repeat scroll center;
- width: 17px;
- height: 20px;
- overflow: hidden;
-}
-.tocResize {
- position: absolute;
- top: 90px;
- left: 300px;
- width: 5px;
- height: 20px;
- padding-right: 5px;
-}
-.tocResize img {
- border: none;
- cursor: pointer;
-}
-div#leftNav {
- float: left;
- margin: 0px -1px 0 0;
- width: 280px;
- min-height: 10px;
- position: relative;
- border-right: 1px solid #b6b6b6;
- padding-left: 10px;
- padding-top: 15px;
-}
-div#tocNav {
- font-family: 'Segoe UI' ,Verdana,Arial;
- overflow-x: hidden;
- line-height: normal;
- margin: -20px 0 0 -4px;
-}
-div#tocNav > div {
- overflow-x: hidden;
- white-space: normal;
- width: auto;
- margin-bottom: 5px;
-}
-div#leftNav a, div#leftNav a:link, div#leftNav a:visited {
- color: #1364c4;
- text-decoration: none;
-}
-div#leftNav a:hover {
- color: #3390b1;
-}
-div#tocNav > div > a, div#tocNav > div > a:link, div#tocNav > div > a:visited {
- display: block;
- margin-left: 18px;
- overflow: hidden;
-}
-div#tocNav > div.current > a, div#tocNav > div.current > a:link, div#tocNav > div.current > a:visited {
- color: #000;
- font-weight: bold;
- text-decoration: none;
-}
-div#tocNav > div > a.tocExpanded, div#tocNav > div > a.tocCollapsed {
- float: left;
- display: inline-block;
- margin-left: 0;
- vertical-align: top;
-}
-div#tocResizableEW {
- cursor: e-resize;
- width: 15px;
- top: 0;
- height: 100%;
- position: absolute;
- display: block;
- font-size: 0.5px;
- right: -7px;
-}
-.toclevel0:first-child {
- margin-top: 16px;
-}
-div#tocNav > div.toclevel1 {
- padding-left: 17px;
-}
-div#tocNav > div.toclevel2 {
- padding-left: 34px;
-}
-div#tocNav > div.toclevel3 {
- padding-left: 51px;
-}
-div#tocNav > div.toclevel4 {
- padding-left: 68px;
-}
-div#tocNav > div.toclevel5 {
- padding-left: 85px;
-}
-div#tocNav > div.toclevel6 {
- padding-left: 102px;
-}
-div#tocNav > div.toclevel7 {
- padding-left: 119px;
-}
-div#tocNav > div.toclevel8 {
- padding-left: 136px;
-}
-div#tocNav > div.toclevel9 {
- padding-left: 153px;
-}
-div#tocNav > div.toclevel10 {
- padding-left: 170px;
-}
-
-/* Search form */
-form#SearchForm {
- float: right;
- background-color: #eee;
- width: 280px;
-}
-form#SearchForm input {
- background-color: #eee;
- border: 0;
- height: 22px;
- width: 230px;
- color: #3b3b3b;
- display: inline-block;
- margin: 1px 0 0 0;
- padding: 1px 4px 1px 10px;
-}
-form#SearchForm button {
- background: url('../icons/Search.png') no-repeat scroll center;
- background-color: #eee;
- float: right;
- border: 0;
- margin: 3px 2px 0 0;
- cursor: pointer;
- color: #3b3b3b;
- width: 19px;
- height: 18px;
- overflow: hidden;
-}
-.searchContainer {
- width: 700px;
- margin-top: 50px;
- margin-left: auto;
- margin-right: auto;
-}
diff --git a/doc/ref/csharp/html/styles/branding-cs-CZ.css b/doc/ref/csharp/html/styles/branding-cs-CZ.css
deleted file mode 100644
index f38de74970c..00000000000
--- a/doc/ref/csharp/html/styles/branding-cs-CZ.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start CS-CZ locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-de-DE.css b/doc/ref/csharp/html/styles/branding-de-DE.css
deleted file mode 100644
index 4cf80baddae..00000000000
--- a/doc/ref/csharp/html/styles/branding-de-DE.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start DE-DE locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-en-US.css b/doc/ref/csharp/html/styles/branding-en-US.css
deleted file mode 100644
index 248cbe5a2a4..00000000000
--- a/doc/ref/csharp/html/styles/branding-en-US.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start EN-US locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-es-ES.css b/doc/ref/csharp/html/styles/branding-es-ES.css
deleted file mode 100644
index 4a7ebbd68dc..00000000000
--- a/doc/ref/csharp/html/styles/branding-es-ES.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start ES-ES locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-fr-FR.css b/doc/ref/csharp/html/styles/branding-fr-FR.css
deleted file mode 100644
index d924dec9654..00000000000
--- a/doc/ref/csharp/html/styles/branding-fr-FR.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start FR-FR locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-it-IT.css b/doc/ref/csharp/html/styles/branding-it-IT.css
deleted file mode 100644
index 36c6b224fb1..00000000000
--- a/doc/ref/csharp/html/styles/branding-it-IT.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start IT-IT locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-ja-JP.css b/doc/ref/csharp/html/styles/branding-ja-JP.css
deleted file mode 100644
index 403aa6ddf8f..00000000000
--- a/doc/ref/csharp/html/styles/branding-ja-JP.css
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Start JA-JP locale-specific CSS */
-body
-{
- font-family: Segoe UI, Verdana, Arial, MS Pゴシック;
-}
-pre
-{
- font-family: Consolas, Courier, monospace, MS ゴシック;
-}
-span.tt
-{
- font-family: Consolas, Courier, monospace, MS ゴシック;
-}
-span.code
-{
- font-family: Consolas, Courier, monospace, MS ゴシック;
-}
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-ko-KR.css b/doc/ref/csharp/html/styles/branding-ko-KR.css
deleted file mode 100644
index 2b46e923efb..00000000000
--- a/doc/ref/csharp/html/styles/branding-ko-KR.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Start KO-KR locale-specific CSS */
-body
-{
- font-family: Malgun Gothic, Segoe UI, Verdana, Arial;
- font-size: 0.75em; /*9pt*/
-}
-pre
-{
- font-family: Consolas, Courier, monospace, 돋움체;
-}
-span.tt
-{
- font-family: Consolas, Courier, monospace, 돋움체;
-}
-span.code
-{
- font-family: Consolas, Courier, monospace, 돋움체;
-}
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-pl-PL.css b/doc/ref/csharp/html/styles/branding-pl-PL.css
deleted file mode 100644
index 19e981032d4..00000000000
--- a/doc/ref/csharp/html/styles/branding-pl-PL.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start PL-PL locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-pt-BR.css b/doc/ref/csharp/html/styles/branding-pt-BR.css
deleted file mode 100644
index a0683b0ef20..00000000000
--- a/doc/ref/csharp/html/styles/branding-pt-BR.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start PT-BR locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-ru-RU.css b/doc/ref/csharp/html/styles/branding-ru-RU.css
deleted file mode 100644
index c31f83a44bc..00000000000
--- a/doc/ref/csharp/html/styles/branding-ru-RU.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start RU-RU locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-tr-TR.css b/doc/ref/csharp/html/styles/branding-tr-TR.css
deleted file mode 100644
index 81ca462ef7c..00000000000
--- a/doc/ref/csharp/html/styles/branding-tr-TR.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Start TR-TR locale-specific CSS */
-
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-zh-CN.css b/doc/ref/csharp/html/styles/branding-zh-CN.css
deleted file mode 100644
index cf79e7cd000..00000000000
--- a/doc/ref/csharp/html/styles/branding-zh-CN.css
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Start ZH-CN locale-specific CSS */
-body
-{
- font-family: MS YaHei, Simsun, Segoe UI, Verdana, Arial;
-}
-pre
-{
- font-family: Consolas, Courier, monospace, 新宋体;
-}
-span.tt
-{
- font-family: Consolas, Courier, monospace, 新宋体;
-}
-span.code
-{
- font-family: Consolas, Courier, monospace, 新宋体;
-}
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding-zh-TW.css b/doc/ref/csharp/html/styles/branding-zh-TW.css
deleted file mode 100644
index eab654f8c5e..00000000000
--- a/doc/ref/csharp/html/styles/branding-zh-TW.css
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Start ZH-TW locale-specific CSS */
-body
-{
- font-family: MS JhengHei, MingLiU, Segoe UI, Verdana, Arial;
-}
-pre
-{
- font-family: Consolas, Courier, monospace, 細明體;
-}
-span.tt
-{
- font-family: Consolas, Courier, monospace, 細明體;
-}
-span.code
-{
- font-family: Consolas, Courier, monospace, 細明體;
-}
-/* End locale-specific CSS */
diff --git a/doc/ref/csharp/html/styles/branding.css b/doc/ref/csharp/html/styles/branding.css
deleted file mode 100644
index 7afa70b3150..00000000000
--- a/doc/ref/csharp/html/styles/branding.css
+++ /dev/null
@@ -1,561 +0,0 @@
-/* General styles */
-body {
- font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-size: 15px;
- padding: 0;
- margin: 0;
- margin-left: auto;
- margin-right: auto;
- color: #000;
-}
-h1 {
- font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-size: 2.5em;
- font-weight: normal;
- margin-top: 0;
- color: #000;
-}
-h2, h3 {
- font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-weight: normal;
- margin: 0;
- padding-bottom: 5px;
- padding-top: 5px;
- color: #000;
-}
-h2 {
- font-size: 1.769em;
-}
-h3 {
- font-size: 1.231em;
-}
-h4, .subHeading {
- font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.077em;
- font-weight: normal;
- margin: 0;
- color: #000;
-}
-.subHeading {
- margin-top: 5px;
-}
-h5, h6 {
- font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-size: 1em;
- font-weight: normal;
- line-height: 130%;
- margin: 0;
- color: #000;
-}
-a, a:link {
- text-decoration: none;
- color: #1364c4;
-}
-a:visited, a:active {
- text-decoration: none;
- color: #03697a;
-}
-a:hover {
- text-decoration: none;
- color: #3390b1;
-}
-img {
- border: 0;
-}
-p {
- margin-top: 0;
- margin-bottom: 0;
- padding-bottom: 15px;
- line-height: 18px;
-}
-q {
- font-style: italic;
-}
-blockquote {
- margin-top: 0px;
-}
-table {
- border-collapse: collapse;
- padding: 0;
- margin-bottom: 15px;
- font-size: 15px;
- width: 100%;
-}
-td, th {
- border-bottom: 1px solid #dbdbdb;
- margin: 10px;
- padding-top: 10px;
- padding-bottom: 10px;
- padding-right: 8px;
- padding-left: 8px;
-}
-th {
- background-color: #ededed;
- color: #636363;
- text-align: left;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-td {
- color: #2a2a2a;
- vertical-align: top;
-}
-table p:last-child {
- padding-bottom: 0;
-}
-table.members {
- width: 100%;
-}
-table.members td {
- min-width: 72px;
-}
-table.members img {
- padding-right: 5px;
-}
-div.alert img {
- padding-right: 5px;
-}
-ol {
- margin-top: 0px;
- margin-bottom: 10px;
-}
-ol ol {
- list-style-type: lower-alpha;
-}
-ol ol ol {
- list-style-type: lower-roman;
-}
-ul {
- margin-top: 0px;
- margin-bottom: 10px;
-}
-.noBullet {
- list-style-type: none;
- padding-left: 20px;
-}
-ul ul {
- list-style-type: circle;
-}
-ul ul ul {
- list-style-type: square;
-}
-dt {
- font-weight: 600;
-}
-pre {
- font-family: Consolas, Courier, monospace;
- overflow: hidden;
-}
-.pageHeader {
- font-family: 'Segoe UI' , Tahoma, Helvetica, Sans-Serif;
- background-color: #333333;
- color: #d0d0d0;
- padding: 5px 10px;
- vertical-align: middle;
- height: 25px;
-}
-.pageBody {
- padding: 0px;
-}
-.topicContent {
- padding: 10px 10px 15px 10px;
- overflow: visible;
- border-left: 1px solid #bbb;
-}
-.pageFooter {
- clear: both;
- border-top: solid 1px #bbb;
- padding: 10px;
-}
-.feedbackLink {
-}
-.iconColumn {
- width: 100px;
-}
-.seeAlsoStyle {
-}
-table.titleTable td {
- padding-top: 0px;
- border-width: 0px;
-}
-td.titleColumn {
- font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif;
- font-size: 2.5em;
- font-weight: normal;
- margin-top: 0px;
- padding-left: 0px;
- color: #000;
- vertical-align: middle;
-}
-td.logoColumn {
- padding-left: 0px;
- padding-right: 10px;
- vertical-align: middle;
- width: 1px;
-}
-td.logoColumnAbove {
- padding: 0px 10px 0px 0px;
- vertical-align: middle;
-}
-span.selflink {
- color: #000066;
-}
-div.preliminary {
- margin-top: 1em;
- margin-bottom: 1em;
- font-weight: bold;
- color: #333333;
-}
-div.caption {
- font-weight: bold;
- font-size: 1em; /*12pt*/
- color: #003399;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-.procedureSubHeading {
- font-size: 1.1em; /*13.5pt*/
- font-weight: bold;
-}
-.summary {
-}
-
-/* Collapsible region styles */
-.collapsibleAreaRegion {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-.collapseToggle {
- padding-right: 5px;
-}
-.collapsibleRegionTitle {
- font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif !important;
- font-style: normal !important;
- font-size: 1.769em;
- margin-top: 9px;
- margin-bottom: 19px;
- padding-top: 20px;
- padding-bottom: 5px;
- cursor: pointer;
-}
-.collapsibleSection {
- padding: 0 0 0 20px;
-}
-
-/* Syntax and code snippet styles */
-.codeSnippetContainer {
- min-width: 260px;
- margin-top: 10px;
-}
-.codeSnippetContainerTabs {
- height: 23px;
- vertical-align: middle;
- position: relative;
- z-index: 1;
-}
-.codeSnippetContainerTab {
- padding: 0px 15px;
- width: auto;
- height: 22px;
- color: #2a2a2a;
- font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important;
- font-size: 12px;
- font-style: normal !important;
- vertical-align: baseline;
- float: left;
-}
-.codeSnippetContainerTabActive {
- background: #f8f8f8;
- padding: 0px 15px;
- width: auto;
- height: 22px;
- color: #000000;
- font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important;
- font-size: 12px;
- font-style: normal !important;
- vertical-align: baseline;
- border-top-color: #939393;
- border-right-color: #939393;
- border-left-color: #939393;
- border-top-width: 1px;
- border-right-width: 1px;
- border-left-width: 1px;
- border-top-style: solid;
- border-right-style: solid;
- border-left-style: solid;
- float: left;
-}
-.codeSnippetContainerTabPhantom {
- background: #f8f8f8;
- padding: 0px 15px;
- width: auto;
- height: 22px;
- color: #000000;
- font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important;
- font-size: 12px;
- font-style: normal !important;
- vertical-align: baseline;
- border-top-color: #939393;
- border-right-color: #939393;
- border-left-color: #939393;
- border-top-width: 1px;
- border-right-width: 1px;
- border-left-width: 1px;
- border-top-style: solid;
- border-right-style: solid;
- border-left-style: solid;
- float: left;
- display: none;
-}
-.codeSnippetContainerTabSingle {
- background: #f8f8f8;
- padding: 2px 15px 0px 15px;
- width: auto;
- height: 20px;
- color: #000000;
- font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important;
- font-size: 12px;
- font-weight: bold;
- font-style: normal !important;
- vertical-align: baseline;
- border-top-color: #939393;
- border-right-color: #939393;
- border-left-color: #939393;
- border-top-width: 1px;
- border-right-width: 1px;
- border-left-width: 1px;
- border-top-style: solid;
- border-right-style: solid;
- border-left-style: solid;
- float: left;
-}
-.codeSnippetContainerTab a {
- top: 2px;
- color: #000000;
- font-weight: bold;
- text-decoration: none;
- position: relative;
-}
-.codeSnippetContainerTab a:link {
- color: #000000;
-}
-.codeSnippetContainerTab a:hover {
- color: #136460;
-}
-.codeSnippetContainerTabActive a {
- top: 2px;
- color: #000000;
- font-weight: bold;
- text-decoration: none;
- position: relative;
- cursor: default;
-}
-.codeSnippetContainerTabActive a:link {
- color: #000000;
-}
-.codeSnippetContainerTabActive a:hover {
- color: #000000;
-}
-.codeSnippetContainerTabPhantom a {
- top: 2px;
- color: #000000;
- font-weight: bold;
- text-decoration: none;
- position: relative;
- cursor: default;
-}
-.codeSnippetContainerTabPhantom a:link {
- color: #000000;
-}
-.codeSnippetContainerCodeContainer {
- border: 1px solid #939393;
- top: -1px;
- margin-bottom: 12px;
- position: relative;
-}
-.codeSnippetToolBar {
- width: auto;
- height: auto;
-}
-.codeSnippetToolBarText {
- top: -8px;
- width: auto;
- height: 0px;
- padding-right: 0px;
- padding-left: 0px;
- vertical-align: top;
- float: right;
- position: relative;
-}
-.codeSnippetToolBarText a {
- color: #1364c4;
- text-decoration: none;
- padding-left: 8px;
- padding-right: 8px;
- font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important;
- font-size: 10px;
- font-style: normal !important;
- text-decoration: none;
- margin-right: 10px;
- margin-left: 0px;
- background-color: #ffffff;
-}
-.codeSnippetToolBarText a:link {
- color: #1364c4;
-}
-.codeSnippetContainerCode {
- margin: 0px;
- padding: 10px;
- width: auto;
-}
-.codeSnippetContainerCode div {
- margin: 0px;
- padding: 0px;
-}
-.codeSnippetContainerCode pre {
- margin: 0px;
- padding: 5px;
- overflow: auto;
- font-family: Consolas, Courier, monospace !important;
- font-style: normal;
- font-weight: normal;
- -ms-word-wrap: normal;
-}
-.codeSnippetContainerCode .keyword {
- color: #0000ff;
- font-weight: normal;
-}
-
-/* Keyword and phrase styles */
-span.code, span.command {
- font-family: Consolas, Courier, monospace;
- color: #000066;
-}
-span.ui {
- font-weight: bold;
-}
-span.math {
- font-style: italic;
-}
-span.input {
- font-weight: bold;
-}
-span.term {
- font-style: italic;
-}
-span.label {
- font-weight: bold;
-}
-span.foreignPhrase, span.phrase {
- font-style: italic;
-}
-span.placeholder {
- font-style: italic;
-}
-span.typeparameter {
- font-style: italic;
-}
-span.identifier {
-}
-span.keyword {
- font-weight: bold;
-}
-span.parameter {
- font-style: italic;
-}
-dt span.parameter {
- font-weight: normal;
-}
-span.literal, span.literalValue {
- color: #cc0000;
-}
-span.comment {
- color: #006633;
-}
-span.introStyle {
- color: #a9a9a9;
-}
-span.nolink {
- font-weight: bold;
-}
-
-/* Auto-outline styles */
-ul.autoOutline {
-}
-li.outlineSectionEntry {
-}
-div.outlineSectionEntrySummary {
-}
-
-/* Media styles */
-div.mediaNear {
- text-align: left;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-div.mediaFar {
- text-align: right;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-div.mediaCenter {
- text-align: center;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-span.captionLead {
- font-weight: bold;
- margin-right: .5em;
-}
-span.media img {
- vertical-align: top;
-}
-
-/* Glossary styles */
-div.glossaryDiv {
-}
-div.glossaryLetterBar {
-}
-hr.glossaryRule {
-}
-h3.glossaryGroupHeading {
- color: #808080;
-}
-div.glossaryGroup {
-}
-dl.glossaryGroupList {
- margin: 0;
- color: Black;
-}
-dt.glossaryEntry {
- margin-left: 2em;
-}
-dd.glossaryEntry {
- margin-left: 2em;
- margin-bottom: 2em;
-}
-div.relatedEntry {
- margin-bottom: 4px;
-}
-
-/* Bibliography styles */
-div.bibliographStyle {
- padding-top: 5px;
-}
-span.bibliographyNumber {
-}
-span.bibliographyAuthor {
- font-weight: bold;
-}
-span.bibliographyTitle {
- font-style: italic;
-}
-span.bibliographyPublisher {
-}
-sup.citation a:link a:visited a:active {
- text-decoration: none;
-}
-
-/* Placeholder for the Help 1 user data style class */
-.userDataStyle {
-}
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml
deleted file mode 100644
index 3270d758a1d..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ChannelOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml
deleted file mode 100644
index 2c4430b029c..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ContextPropagationOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml
deleted file mode 100644
index 286d4082d3f..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Metadata.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml
deleted file mode 100644
index 7c5391eca60..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_ServerPort.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml
deleted file mode 100644
index 6757777b9f1..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_Status.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml
deleted file mode 100644
index 1962206e764..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_VersionInfo.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml b/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml
deleted file mode 100644
index 21fb6dde0ae..00000000000
--- a/doc/ref/csharp/html/toc/Fields_T_Grpc_Core_WriteOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml
deleted file mode 100644
index acf36a906c9..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Auth_AuthInterceptors.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml
deleted file mode 100644
index 22aa4b27f30..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncClientStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
deleted file mode 100644
index 1cb7ed02566..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml
deleted file mode 100644
index 77cea2d896b..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncServerStreamingCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml
deleted file mode 100644
index 577502e6a04..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_AsyncUnaryCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml
deleted file mode 100644
index 954f9fadb37..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallInvocationDetails_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml
deleted file mode 100644
index 728aebd0ad0..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_CallOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml
deleted file mode 100644
index 15004efc43a..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Calls.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml
deleted file mode 100644
index 82a1d9c7a0c..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Channel.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml
deleted file mode 100644
index a2f2d35c986..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ClientBase.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml
deleted file mode 100644
index 2035e722006..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_GrpcEnvironment.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml
deleted file mode 100644
index fa63f659de2..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IAsyncStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml
deleted file mode 100644
index 2d1cda8c2e3..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_IClientStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml
deleted file mode 100644
index e43c4157ba9..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ConsoleLogger.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml
deleted file mode 100644
index 0b32dd3e9d4..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Logging_ILogger.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml
deleted file mode 100644
index 8256f81f196..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Marshallers.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml
deleted file mode 100644
index 5332983a9bd..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml
deleted file mode 100644
index 906d34512cd..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Metadata_Entry.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml
deleted file mode 100644
index 98413ca066e..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml
deleted file mode 100644
index 0c49a01fcf5..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerCallContext.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml
deleted file mode 100644
index 96e06c8217c..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml
deleted file mode 100644
index 7c1e09d746a..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_ServerServiceDefinition_Builder.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml
deleted file mode 100644
index ae1470ea804..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServerPortCollection.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml
deleted file mode 100644
index ac1bbdb8b92..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Server_ServiceDefinitionCollection.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml
deleted file mode 100644
index b3f16eb9ced..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Status.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml
deleted file mode 100644
index d667d519ffe..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_AsyncStreamExtensions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml
deleted file mode 100644
index ca4c3a5be50..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_BenchmarkUtil.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml b/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml
deleted file mode 100644
index 7770ff80193..00000000000
--- a/doc/ref/csharp/html/toc/Methods_T_Grpc_Core_Utils_Preconditions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/N_Grpc_Auth.xml b/doc/ref/csharp/html/toc/N_Grpc_Auth.xml
deleted file mode 100644
index c38c9e88bbd..00000000000
--- a/doc/ref/csharp/html/toc/N_Grpc_Auth.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/N_Grpc_Core.xml b/doc/ref/csharp/html/toc/N_Grpc_Core.xml
deleted file mode 100644
index 4a4e0d243b4..00000000000
--- a/doc/ref/csharp/html/toc/N_Grpc_Core.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml b/doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml
deleted file mode 100644
index 714ea702046..00000000000
--- a/doc/ref/csharp/html/toc/N_Grpc_Core_Logging.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml b/doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml
deleted file mode 100644
index 0380ca3af6e..00000000000
--- a/doc/ref/csharp/html/toc/N_Grpc_Core_Utils.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml
deleted file mode 100644
index 14136c8343e..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_CallInvocationDetails_2__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml
deleted file mode 100644
index 2dca1f5a6ee..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_ChannelOption__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml
deleted file mode 100644
index 1b954cd4f70..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Channel__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml
deleted file mode 100644
index 7dcdd7f7e18..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Error.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml
deleted file mode 100644
index ab90f1c0dcb..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ConsoleLogger_Warning.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml
deleted file mode 100644
index dd47a40c1e2..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Error.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml
deleted file mode 100644
index b6b2ccc721e..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Logging_ILogger_Warning.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml
deleted file mode 100644
index 7ad9ece2b86..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Add.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml
deleted file mode 100644
index 0bb3ab2d925..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Metadata_Entry__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml
deleted file mode 100644
index 011031f2fbd..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_RpcException__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml
deleted file mode 100644
index 172e33a44bc..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_ServerServiceDefinition_Builder_AddMethod.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml
deleted file mode 100644
index 01f69d8a2b1..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Server_ServerPortCollection_Add.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml
deleted file mode 100644
index db124846874..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslCredentials__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml
deleted file mode 100644
index 74ef238258c..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_SslServerCredentials__ctor.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml
deleted file mode 100644
index 19ff88af8d6..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_AsyncStreamExtensions_WriteAllAsync.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml
deleted file mode 100644
index c92e748cfca..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckArgument.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml
deleted file mode 100644
index c70fd8a4a22..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckNotNull.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml b/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml
deleted file mode 100644
index 6aa498a1708..00000000000
--- a/doc/ref/csharp/html/toc/Overload_Grpc_Core_Utils_Preconditions_CheckState.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml
deleted file mode 100644
index f0b84999dfc..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncClientStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
deleted file mode 100644
index bcbd985aed7..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml
deleted file mode 100644
index 13a9c18f37b..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncServerStreamingCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml
deleted file mode 100644
index f7aacbd9eb3..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_AsyncUnaryCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml
deleted file mode 100644
index 39900b479fa..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallInvocationDetails_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml
deleted file mode 100644
index 13d5746aa59..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_CallOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml
deleted file mode 100644
index 3ccb9f7d5f6..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Channel.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml
deleted file mode 100644
index f5035d4b086..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ChannelOption.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml
deleted file mode 100644
index 278b6d2dc7c..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ClientBase.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml
deleted file mode 100644
index f1c74ec514d..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ContextPropagationOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml
deleted file mode 100644
index df6433582b0..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Credentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml
deleted file mode 100644
index f817e180bb5..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_GrpcEnvironment.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml
deleted file mode 100644
index 6ef46a43fda..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IAsyncStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml
deleted file mode 100644
index b80fa3a04c4..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IHasWriteOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml
deleted file mode 100644
index e51b6128a37..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_IMethod.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml
deleted file mode 100644
index 597f9797310..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_KeyCertificatePair.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml
deleted file mode 100644
index 5523dadcbe0..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshaller_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml
deleted file mode 100644
index 996f6e70109..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Marshallers.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml
deleted file mode 100644
index ddafcbeef79..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml
deleted file mode 100644
index 6259d4a1cf4..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Metadata_Entry.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml
deleted file mode 100644
index 81590313928..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Method_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml
deleted file mode 100644
index 5c154e6deb9..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_RpcException.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml
deleted file mode 100644
index 6088ffd72d0..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Server.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml
deleted file mode 100644
index 4c22ae168bb..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCallContext.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml
deleted file mode 100644
index 9fc1b103c19..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml
deleted file mode 100644
index 0613dc659a5..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_ServerPort.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml
deleted file mode 100644
index b789111c5af..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml
deleted file mode 100644
index 35284d68fc9..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_SslServerCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml
deleted file mode 100644
index 030c8d044ab..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_Status.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml b/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml
deleted file mode 100644
index 922857669d4..00000000000
--- a/doc/ref/csharp/html/toc/Properties_T_Grpc_Core_WriteOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/R_Project_Documentation.xml b/doc/ref/csharp/html/toc/R_Project_Documentation.xml
deleted file mode 100644
index e8895fc2f00..00000000000
--- a/doc/ref/csharp/html/toc/R_Project_Documentation.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml b/doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml
deleted file mode 100644
index 2e934b724a8..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Auth_AuthInterceptors.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml
deleted file mode 100644
index 19a77d8a7e1..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncClientStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
deleted file mode 100644
index 7fc72158620..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncDuplexStreamingCall_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml
deleted file mode 100644
index ef66bf5b868..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncServerStreamingCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml
deleted file mode 100644
index 23b4b52b7f2..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_AsyncUnaryCall_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml
deleted file mode 100644
index 58b3de4887c..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_CallInvocationDetails_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml
deleted file mode 100644
index 37363c4d4ac..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_CallOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml
deleted file mode 100644
index a311abaf989..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Calls.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml
deleted file mode 100644
index 6b1861dced2..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Channel.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml
deleted file mode 100644
index 5d862e65a0b..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOption.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml
deleted file mode 100644
index 691797e6cf2..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ChannelOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml
deleted file mode 100644
index 349238f4ca3..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ClientBase.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml
deleted file mode 100644
index 6405e3d2f27..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml
deleted file mode 100644
index 9425beff5f4..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ContextPropagationToken.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml
deleted file mode 100644
index bbac8193ba0..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Credentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml
deleted file mode 100644
index bbd474189bb..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_GrpcEnvironment.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml
deleted file mode 100644
index b055c910a61..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamReader_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml
deleted file mode 100644
index a9b94b5e9a7..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IAsyncStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml
deleted file mode 100644
index fda5e1d490b..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IClientStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml
deleted file mode 100644
index b5cdd29aaa6..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IHasWriteOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml
deleted file mode 100644
index 81f26160490..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IMethod.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml
deleted file mode 100644
index ecd55220fdd..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_IServerStreamWriter_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml
deleted file mode 100644
index 3bc56c00afd..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_KeyCertificatePair.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml
deleted file mode 100644
index 18b5fb43401..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ConsoleLogger.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml
deleted file mode 100644
index f49a352d992..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Logging_ILogger.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml
deleted file mode 100644
index ca546524a4d..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Marshaller_1.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml
deleted file mode 100644
index e6cb53d9877..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Marshallers.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml
deleted file mode 100644
index c1fa355265e..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml
deleted file mode 100644
index e3b05189aa6..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Metadata_Entry.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml
deleted file mode 100644
index 2e4329d5ff7..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Method_2.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml
deleted file mode 100644
index d97a369043c..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_RpcException.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml
deleted file mode 100644
index 78e807def0f..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Server.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml
deleted file mode 100644
index 96856689c42..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCallContext.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml
deleted file mode 100644
index b7d878f5860..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml
deleted file mode 100644
index 63cd6b40933..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerPort.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml
deleted file mode 100644
index ec30762d323..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml
deleted file mode 100644
index 0641ac30d90..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_ServerServiceDefinition_Builder.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml
deleted file mode 100644
index 9a704ffdf5a..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServerPortCollection.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml
deleted file mode 100644
index e9d77684020..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Server_ServiceDefinitionCollection.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml
deleted file mode 100644
index bb0f2a98ab7..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_SslCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml
deleted file mode 100644
index fa3e0f84255..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_SslServerCredentials.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml
deleted file mode 100644
index d1bc2943a00..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Status.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml
deleted file mode 100644
index c581425d37c..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_AsyncStreamExtensions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml
deleted file mode 100644
index cb5d367aa39..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_BenchmarkUtil.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml
deleted file mode 100644
index 192b0257e21..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_Utils_Preconditions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml
deleted file mode 100644
index 283cbbb83e1..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_VersionInfo.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml b/doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml
deleted file mode 100644
index 5dcda42dc01..00000000000
--- a/doc/ref/csharp/html/toc/T_Grpc_Core_WriteOptions.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/doc/ref/csharp/html/toc/roottoc.xml b/doc/ref/csharp/html/toc/roottoc.xml
deleted file mode 100644
index e5d2703f77c..00000000000
--- a/doc/ref/csharp/html/toc/roottoc.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
From 0c05dcd6bd22398f7cb6689dab2188c7d580657b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch
Date: Thu, 15 Oct 2015 13:52:16 -0700
Subject: [PATCH 095/111] cleanup dockerfiles and scripts for old interop
infrastructure
---
tools/README.md | 2 -
tools/dockerfile/grpc_csharp_mono/Dockerfile | 55 -
tools/dockerfile/grpc_csharp_mono/build.sh | 10 -
.../grpc_csharp_mono_base/Dockerfile | 56 -
tools/dockerfile/grpc_cxx/Dockerfile | 57 -
tools/dockerfile/grpc_cxx/build.sh | 42 -
tools/dockerfile/grpc_go/Dockerfile | 46 -
tools/dockerfile/grpc_go/README.md | 4 -
tools/dockerfile/grpc_go/build.sh | 34 -
tools/dockerfile/grpc_java/Dockerfile | 41 -
tools/dockerfile/grpc_java/README.md | 9 -
tools/dockerfile/grpc_java/build.sh | 37 -
tools/dockerfile/grpc_node/Dockerfile | 53 -
tools/dockerfile/grpc_node/build.sh | 36 -
tools/dockerfile/grpc_node_base/Dockerfile | 53 -
tools/dockerfile/grpc_php/Dockerfile | 60 -
tools/dockerfile/grpc_php/README.md | 10 -
tools/dockerfile/grpc_php/build.sh | 18 -
tools/dockerfile/grpc_php_base/Dockerfile | 122 --
tools/dockerfile/grpc_php_base/README.md | 9 -
tools/dockerfile/grpc_python/Dockerfile | 57 -
tools/dockerfile/grpc_python/README.md | 11 -
tools/dockerfile/grpc_python_base/Dockerfile | 49 -
tools/dockerfile/grpc_python_base/README.md | 7 -
tools/dockerfile/grpc_ruby/Dockerfile | 56 -
tools/dockerfile/grpc_ruby/README.md | 10 -
tools/dockerfile/grpc_ruby/build.sh | 36 -
tools/dockerfile/grpc_ruby_base/Dockerfile | 92 -
tools/dockerfile/grpc_ruby_base/README.md | 9 -
tools/gce_setup/README.md | 48 -
tools/gce_setup/build_images.sh | 46 -
tools/gce_setup/builder.sh | 58 -
tools/gce_setup/cloud_prod_runner.sh | 89 -
tools/gce_setup/cloud_prod_test.sh | 62 -
tools/gce_setup/compute_extras.sh | 284 ---
tools/gce_setup/grpc_docker.sh | 1739 -----------------
tools/gce_setup/interop_test.sh | 77 -
tools/gce_setup/interop_test_runner.sh | 75 -
tools/gce_setup/new_grpc_docker_builder.sh | 182 --
.../new_grpc_docker_builder_on_startup.sh | 170 --
tools/gce_setup/post.html | 11 -
tools/gce_setup/pre.html | 15 -
tools/gce_setup/private_build_and_test.sh | 89 -
tools/gce_setup/shared_startup_funcs.sh | 562 ------
44 files changed, 4588 deletions(-)
delete mode 100644 tools/dockerfile/grpc_csharp_mono/Dockerfile
delete mode 100755 tools/dockerfile/grpc_csharp_mono/build.sh
delete mode 100644 tools/dockerfile/grpc_csharp_mono_base/Dockerfile
delete mode 100644 tools/dockerfile/grpc_cxx/Dockerfile
delete mode 100755 tools/dockerfile/grpc_cxx/build.sh
delete mode 100644 tools/dockerfile/grpc_go/Dockerfile
delete mode 100644 tools/dockerfile/grpc_go/README.md
delete mode 100755 tools/dockerfile/grpc_go/build.sh
delete mode 100644 tools/dockerfile/grpc_java/Dockerfile
delete mode 100644 tools/dockerfile/grpc_java/README.md
delete mode 100755 tools/dockerfile/grpc_java/build.sh
delete mode 100644 tools/dockerfile/grpc_node/Dockerfile
delete mode 100755 tools/dockerfile/grpc_node/build.sh
delete mode 100644 tools/dockerfile/grpc_node_base/Dockerfile
delete mode 100644 tools/dockerfile/grpc_php/Dockerfile
delete mode 100644 tools/dockerfile/grpc_php/README.md
delete mode 100755 tools/dockerfile/grpc_php/build.sh
delete mode 100644 tools/dockerfile/grpc_php_base/Dockerfile
delete mode 100644 tools/dockerfile/grpc_php_base/README.md
delete mode 100644 tools/dockerfile/grpc_python/Dockerfile
delete mode 100644 tools/dockerfile/grpc_python/README.md
delete mode 100644 tools/dockerfile/grpc_python_base/Dockerfile
delete mode 100644 tools/dockerfile/grpc_python_base/README.md
delete mode 100644 tools/dockerfile/grpc_ruby/Dockerfile
delete mode 100644 tools/dockerfile/grpc_ruby/README.md
delete mode 100755 tools/dockerfile/grpc_ruby/build.sh
delete mode 100644 tools/dockerfile/grpc_ruby_base/Dockerfile
delete mode 100644 tools/dockerfile/grpc_ruby_base/README.md
delete mode 100644 tools/gce_setup/README.md
delete mode 100755 tools/gce_setup/build_images.sh
delete mode 100755 tools/gce_setup/builder.sh
delete mode 100755 tools/gce_setup/cloud_prod_runner.sh
delete mode 100755 tools/gce_setup/cloud_prod_test.sh
delete mode 100755 tools/gce_setup/compute_extras.sh
delete mode 100755 tools/gce_setup/grpc_docker.sh
delete mode 100755 tools/gce_setup/interop_test.sh
delete mode 100755 tools/gce_setup/interop_test_runner.sh
delete mode 100755 tools/gce_setup/new_grpc_docker_builder.sh
delete mode 100755 tools/gce_setup/new_grpc_docker_builder_on_startup.sh
delete mode 100644 tools/gce_setup/post.html
delete mode 100644 tools/gce_setup/pre.html
delete mode 100755 tools/gce_setup/private_build_and_test.sh
delete mode 100755 tools/gce_setup/shared_startup_funcs.sh
diff --git a/tools/README.md b/tools/README.md
index be7d84b3738..eb6633a866f 100644
--- a/tools/README.md
+++ b/tools/README.md
@@ -8,8 +8,6 @@ dockerfile: Docker files to test gRPC.
doxygen: gRPC C/C++ documentation generation via Doxygen.
-gce_setup: boilerplate to run the Docker files under GCE.
-
jenkins: support for running tests on Jenkins.
profile_analyzer: pretty printer for gRPC profiling data.
diff --git a/tools/dockerfile/grpc_csharp_mono/Dockerfile b/tools/dockerfile/grpc_csharp_mono/Dockerfile
deleted file mode 100644
index 703b658a23b..00000000000
--- a/tools/dockerfile/grpc_csharp_mono/Dockerfile
+++ /dev/null
@@ -1,55 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC C# (on Mono).
-FROM grpc/csharp_mono_base
-
-# Pull the latest sources
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
-# Install the gRPC C# extension library
-RUN make install_grpc_csharp_ext -j12 -C /var/local/git/grpc
-
-# Restore the NuGet dependencies
-RUN cd /var/local/git/grpc/src/csharp && mono /var/local/NuGet.exe restore Grpc.sln
-
-# Build gRPC solution
-RUN cd /var/local/git/grpc/src/csharp && xbuild Grpc.sln
-
-# Add a cacerts directory containing the Google root pem file, allowing the
-# ruby client to access the production test instance
-ADD cacerts cacerts
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-# Run the C# Interop Server
-CMD ["/bin/bash", "-l", "-c", "cd /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug && mono Grpc.IntegrationTesting.Server.exe --use_tls=true --port=8070"]
diff --git a/tools/dockerfile/grpc_csharp_mono/build.sh b/tools/dockerfile/grpc_csharp_mono/build.sh
deleted file mode 100755
index a7737d752e6..00000000000
--- a/tools/dockerfile/grpc_csharp_mono/build.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-cp -R /var/local/git-clone/grpc /var/local/git
-
-make install_grpc_csharp_ext -j12 -C /var/local/git/grpc
-
-cd /var/local/git/grpc/src/csharp && mono /var/local/NuGet.exe restore Grpc.sln
-
-cd /var/local/git/grpc/src/csharp && xbuild Grpc.sln
-
diff --git a/tools/dockerfile/grpc_csharp_mono_base/Dockerfile b/tools/dockerfile/grpc_csharp_mono_base/Dockerfile
deleted file mode 100644
index 88766a4545a..00000000000
--- a/tools/dockerfile/grpc_csharp_mono_base/Dockerfile
+++ /dev/null
@@ -1,56 +0,0 @@
-# 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.
-
-# Base Dockerfile for gRPC C# (on Mono).
-#
-# Includes gRPC C# installation dependencies, things that are unlikely to vary.
-FROM grpc/base
-
-# Update to a newer version of mono
-RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
-RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
-
-# Install dependencies
-RUN apt-get update && apt-get install -y \
- mono-devel \
- nunit \
- nunit-console \
- monodevelop
-
-# Download NuGet
-RUN cd /var/local && wget www.nuget.org/NuGet.exe
-
-# Get the source from GitHub
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
-RUN cd /var/local/git/grpc && \
- git pull --recurse-submodules && \
- git submodule update --init --recursive
-
-# Define the default command.
-CMD ["bash","-l"]
diff --git a/tools/dockerfile/grpc_cxx/Dockerfile b/tools/dockerfile/grpc_cxx/Dockerfile
deleted file mode 100644
index 82887df95c7..00000000000
--- a/tools/dockerfile/grpc_cxx/Dockerfile
+++ /dev/null
@@ -1,57 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC C++
-FROM grpc/base
-
-RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev
-
-# Get the source from GitHub
-RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
-RUN cd /var/local/git/grpc && \
- git pull --recurse-submodules && \
- git submodule update --init --recursive
-
-# Build the protobuf library; then the C core.
-RUN cd /var/local/git/grpc/third_party/protobuf && \
- ./autogen.sh && \
- ./configure --prefix=/usr && \
- make -j12 && make check && make install && make clean
-
-RUN cd /var/local/git/grpc && ls \
- && make clean \
- && make gens/test/cpp/util/messages.pb.cc \
- && make interop_client \
- && make interop_server
-
-ADD service_account service_account
-ADD cacerts cacerts
-ENV GRPC_DEFAULT_SSL_ROOTS_FILE_PATH /cacerts/roots.pem
-
-CMD ["/var/local/git/grpc/bins/opt/interop_server", "--use_tls", "--port=8010"]
diff --git a/tools/dockerfile/grpc_cxx/build.sh b/tools/dockerfile/grpc_cxx/build.sh
deleted file mode 100755
index 8df3f15412d..00000000000
--- a/tools/dockerfile/grpc_cxx/build.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/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.
-rm -rf /var/local/git
-cp -R /var/local/git-clone /var/local/git
-
-cd /var/local/git/grpc/third_party/protobuf && \
- ./autogen.sh && \
- ./configure --prefix=/usr && \
- make -j12 && make check && make install && make clean
-
-cd /var/local/git/grpc && ls \
- && make clean \
- && make gens/test/cpp/util/messages.pb.cc \
- && make interop_client \
- && make interop_server
diff --git a/tools/dockerfile/grpc_go/Dockerfile b/tools/dockerfile/grpc_go/Dockerfile
deleted file mode 100644
index 7f3bd8719ce..00000000000
--- a/tools/dockerfile/grpc_go/Dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC Go
-FROM golang:1.4
-
-# Get the source from GitHub
-RUN go get google.golang.org/grpc
-RUN go get golang.org/x/oauth2
-RUN go get google.golang.org/cloud
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-# Build the interop client and server
-RUN cd src/google.golang.org/grpc/interop/client && go install
-RUN cd src/google.golang.org/grpc/interop/server && go install
-
-# Specify the default command such that the interop server runs on its known testing port
-CMD ["/bin/bash", "-c", "cd src/google.golang.org/grpc/interop/server && go run server.go --use_tls=true --port=8020"]
diff --git a/tools/dockerfile/grpc_go/README.md b/tools/dockerfile/grpc_go/README.md
deleted file mode 100644
index 0d6ad3e391c..00000000000
--- a/tools/dockerfile/grpc_go/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-GRPC Go Dockerfile
-==================
-
-Dockerfile for gRPC Go development, testing and deployment.
diff --git a/tools/dockerfile/grpc_go/build.sh b/tools/dockerfile/grpc_go/build.sh
deleted file mode 100755
index 254942fe01d..00000000000
--- a/tools/dockerfile/grpc_go/build.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/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.
-
-cp -R /var/local/git-clone/grpc-go/. /go/
-go get golang.org/x/oauth2
-go get google.golang.org/cloud
-cd src/google.golang.org/grpc/interop/client && go install
diff --git a/tools/dockerfile/grpc_java/Dockerfile b/tools/dockerfile/grpc_java/Dockerfile
deleted file mode 100644
index 7b1fe563588..00000000000
--- a/tools/dockerfile/grpc_java/Dockerfile
+++ /dev/null
@@ -1,41 +0,0 @@
-# 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.
-
-# Dockerfile for the gRPC Java dev image
-FROM grpc/java_base
-
-RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git /var/local/git/grpc-java && \
- cd /var/local/git/grpc-java && \
- ./gradlew :grpc-interop-testing:installDist -PskipCodegen=true
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-# Specify the default command such that the interop server runs on its known testing port
-CMD ["/var/local/git/grpc-java/run-test-server.sh", "--use_tls=true", "--port=8030"]
diff --git a/tools/dockerfile/grpc_java/README.md b/tools/dockerfile/grpc_java/README.md
deleted file mode 100644
index 808f0fc5f38..00000000000
--- a/tools/dockerfile/grpc_java/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-GRPC Java Dockerfile
-====================
-
-Dockerfile for creating the Java development image
-
-As of 2014/12 this
- - is based on the gRPC Java base
- - pulls from gRPC Java on GitHub
- - installs it and runs the tests
\ No newline at end of file
diff --git a/tools/dockerfile/grpc_java/build.sh b/tools/dockerfile/grpc_java/build.sh
deleted file mode 100755
index e55f2e0f47c..00000000000
--- a/tools/dockerfile/grpc_java/build.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/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.
-rm -rf /var/local/git
-cp -R /var/local/git-clone /var/local/git
-cd /var/local/git/grpc-java/lib/netty && \
- mvn -pl codec-http2 -am -DskipTests install clean
-cd /var/local/git/grpc-java && \
- ./gradlew build installDist
-
-echo 'build finished'
diff --git a/tools/dockerfile/grpc_node/Dockerfile b/tools/dockerfile/grpc_node/Dockerfile
deleted file mode 100644
index dcd91978459..00000000000
--- a/tools/dockerfile/grpc_node/Dockerfile
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC Node
-FROM grpc/node_base
-
-# Pull the latest sources
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
-# Prevent breaking the build if header files are added/removed.
-RUN make clean -C /var/local/git/grpc
-
-# Install the C core.
-RUN make install_c -j12 -C /var/local/git/grpc
-
-RUN cd /var/local/git/grpc/src/node && npm install && node-gyp rebuild
-
-# Add a cacerts directory containing the Google root pem file, allowing the
-# ruby client to access the production test instance
-ADD cacerts cacerts
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-CMD ["/usr/bin/nodejs", "/var/local/git/grpc/src/node/interop/interop_server.js", "--use_tls=true", "--port=8040"]
diff --git a/tools/dockerfile/grpc_node/build.sh b/tools/dockerfile/grpc_node/build.sh
deleted file mode 100755
index be89cc1fcf1..00000000000
--- a/tools/dockerfile/grpc_node/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/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.
-cp -R /var/local/git-clone/grpc /var/local/git
-
-make clean -C /var/local/git/grpc
-
-make install_c -j12 -C /var/local/git/grpc
-
-cd /var/local/git/grpc/src/node && npm install && node-gyp rebuild
diff --git a/tools/dockerfile/grpc_node_base/Dockerfile b/tools/dockerfile/grpc_node_base/Dockerfile
deleted file mode 100644
index 1f3a2362e99..00000000000
--- a/tools/dockerfile/grpc_node_base/Dockerfile
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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.
-
-# Base Dockerfile for gRPC Node.
-#
-# Includes Node installation dependencies
-FROM grpc/base
-
-RUN curl -sL https://deb.nodesource.com/setup | bash -
-
-RUN apt-get update && apt-get install -y nodejs nodejs-legacy
-
-RUN npm install -g node-gyp
-
-# Get the source from GitHub, this gets the protobuf library as well
-RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
-RUN cd /var/local/git/grpc && \
- git pull --recurse-submodules && \
- git submodule update --init --recursive
-
-# TODO: pre-building seems unnecessary, because we need to run make clean
-# anyway to prevent build from crashing if header files are added/removed.
-# Build the C core
-RUN make static_c shared_c -j12 -C /var/local/git/grpc
-
-# Define the default command.
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_php/Dockerfile b/tools/dockerfile/grpc_php/Dockerfile
deleted file mode 100644
index 1e8e1389d9a..00000000000
--- a/tools/dockerfile/grpc_php/Dockerfile
+++ /dev/null
@@ -1,60 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC PHP
-FROM grpc/php_base
-
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
-# Prevent breaking the build if header files are added/removed.
-RUN make clean -C /var/local/git/grpc
-
-RUN make install_c -j12 -C /var/local/git/grpc
-
-RUN cd /var/local/git/grpc/src/php/ext/grpc && git pull && phpize
-
-# Build the grpc PHP extension
-RUN cd /var/local/git/grpc/src/php/ext/grpc \
- && ./configure \
- && make
-
-RUN cd /var/local/git/grpc/src/php && composer install
-
-# Add a cacerts directory containing the Google root pem file, allowing the
-# php client to access the production test instance
-ADD cacerts cacerts
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-RUN cd /var/local/git/grpc/src/php && protoc-gen-php -i tests/interop/ -o tests/interop/ tests/interop/test.proto
-
-RUN cd /var/local/git/grpc/src/php && ./bin/run_tests.sh
diff --git a/tools/dockerfile/grpc_php/README.md b/tools/dockerfile/grpc_php/README.md
deleted file mode 100644
index f3c332b8b30..00000000000
--- a/tools/dockerfile/grpc_php/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-GRPC PHP Dockerfile
-===================
-
-Dockerfile for creating the PHP development instances
-
-As of 2014/10 this
-- is based on the GRPC PHP base
-- adds a pull of the HEAD GRPC PHP source from GitHub
-- it builds it
-- runs the tests, i.e, the image won't be created if the tests don't pass
diff --git a/tools/dockerfile/grpc_php/build.sh b/tools/dockerfile/grpc_php/build.sh
deleted file mode 100755
index fbbc61d5fa4..00000000000
--- a/tools/dockerfile/grpc_php/build.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-cp -R /var/local/git-clone/grpc /var/local/git
-
-make clean -C /var/local/git/grpc
-
-make install_c -j12 -C /var/local/git/grpc
-
-cd /var/local/git/grpc/src/php/ext/grpc && git pull && phpize
-
-cd /var/local/git/grpc/src/php/ext/grpc \
- && ./configure \
- && make
-
-cd /var/local/git/grpc/src/php && composer install
-
-cd /var/local/git/grpc/src/php && protoc-gen-php -i tests/interop/ -o tests/interop/ tests/interop/test.proto
-
diff --git a/tools/dockerfile/grpc_php_base/Dockerfile b/tools/dockerfile/grpc_php_base/Dockerfile
deleted file mode 100644
index aa20d6a374f..00000000000
--- a/tools/dockerfile/grpc_php_base/Dockerfile
+++ /dev/null
@@ -1,122 +0,0 @@
-# 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.
-
-# Base Dockerfile for gRPC PHP.
-#
-# Includes PHP installation dependencies, things that are unlikely to vary.
-FROM grpc/base
-
-RUN echo "deb http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list.d/dotdeb.list
-RUN 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 -
-
-# Install RVM dependencies and other packages
-RUN apt-get update && apt-get install -y \
- autoconf \
- automake \
- bison \
- curl \
- g++ \
- gawk \
- gcc \
- groff \
- libc6-dev \
- libffi-dev \
- libgdbm-dev \
- libncurses5-dev \
- libreadline6-dev \
- libsqlite3-dev \
- libssl-dev \
- libtool \
- libxml2 \
- libyaml-dev \
- make \
- patch \
- php5-common \
- php5-cli \
- php5-dev \
- php-pear \
- pkg-config \
- procps \
- sqlite3 \
- zlib1g-dev
-
-ENV DEBIAN_FRONTEND noniteractive
-
-# Install composer
-RUN curl -sS https://getcomposer.org/installer | php
-RUN mv composer.phar /usr/local/bin/composer
-
-# Download the patched PHP protobuf so that PHP gRPC clients can be generated
-# from proto3 schemas.
-RUN git clone https://github.com/stanley-cheung/Protobuf-PHP.git /var/local/git/protobuf-php
-
-# Install ruby (via RVM) as ruby tools are dependencies for building Protobuf
-# PHP extensions.
-RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 # Needed for RVM
-RUN \curl -sSL https://get.rvm.io | bash -s stable --ruby
-ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-
-# ronn: a ruby tool used to convert markdown to man pages, used during the
-# install of Protobuf extensions
-#
-# rake: a ruby version of make used to build the PHP Protobuf extension
-RUN rvm all do gem install ronn rake
-
-# Get the source from GitHub, this gets the protobuf library as well
-RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
-RUN cd /var/local/git/grpc && \
- git pull --recurse-submodules && \
- git submodule update --init --recursive
-
-# Build and install the protobuf library
-RUN cd /var/local/git/grpc/third_party/protobuf && \
- ./autogen.sh && \
- ./configure --prefix=/usr && \
- make -j12 && make check && make install && make clean
-
-# Install the patched PHP protobuf so that PHP gRPC clients can be generated
-# from proto3 schemas.
-RUN cd /var/local/git/protobuf-php \
- && rvm all do rake pear:package version=1.0 \
- && pear install Protobuf-1.0.tgz
-
-# Install PHPUnit, used to run the PHP unit tests
-RUN wget https://phar.phpunit.de/phpunit.phar \
- && chmod +x phpunit.phar \
- && mv phpunit.phar /usr/local/bin/phpunit
-
-
-# TODO: pre-building seems unnecessary, because we need to run make clean
-# anyway to prevent build from crashing if header files are added/removed.
-# Build the C core
-RUN make static_c shared_c -j12 -C /var/local/git/grpc
-
-# Define the default command.
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_php_base/README.md b/tools/dockerfile/grpc_php_base/README.md
deleted file mode 100644
index d93778e5ec8..00000000000
--- a/tools/dockerfile/grpc_php_base/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-GRPC PHP Base Dockerfile
-========================
-
-Dockerfile for creating the PHP gRPC development Docker instance.
-
-As of 2014/10 this
-- it installs tools and dependencies needed to build gRPC PHP
-- it does not install gRPC PHP itself; a separate Dockerfile that depends on
- this one will do that
diff --git a/tools/dockerfile/grpc_python/Dockerfile b/tools/dockerfile/grpc_python/Dockerfile
deleted file mode 100644
index bce35adc8b6..00000000000
--- a/tools/dockerfile/grpc_python/Dockerfile
+++ /dev/null
@@ -1,57 +0,0 @@
-# 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.
-
-# Dockerfile for GRPC Python
-FROM grpc/python_base
-
-# Pull the latest sources
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
-# Build the C core.
-RUN make install_c -j12 -C /var/local/git/grpc
-
-# Build Python GRPC
-RUN cd /var/local/git/grpc \
- && pip install src/python/grpcio \
- && pip install src/python/grpcio_test
-
-# Run Python GRPC's tests
-RUN cd /var/local/git/grpc \
- && python2.7 -B src/python/grpcio_test/setup.py test
-
-# Add a cacerts directory containing the Google root pem file, allowing the interop client to access the production test instance
-ADD cacerts cacerts
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-# Specify the default command such that the interop server runs on its known testing port
-CMD ["/bin/bash", "-l", "-c", "python2.7 -m interop.server --use_tls --port 8050"]
diff --git a/tools/dockerfile/grpc_python/README.md b/tools/dockerfile/grpc_python/README.md
deleted file mode 100644
index efbdbeff820..00000000000
--- a/tools/dockerfile/grpc_python/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-GRPC Python Dockerfile
-====================
-
-Dockerfile for creating the Python development instances
-
-As of 2015/02 this
-- is based on the GRPC Python base
-- adds a pull of the HEAD GRPC Python source from GitHub
-- builds it
-- runs its tests and aborts image creation if the tests don't pass
-- specifies the Python GRPC interop test server as default command
diff --git a/tools/dockerfile/grpc_python_base/Dockerfile b/tools/dockerfile/grpc_python_base/Dockerfile
deleted file mode 100644
index 6ef7a111dff..00000000000
--- a/tools/dockerfile/grpc_python_base/Dockerfile
+++ /dev/null
@@ -1,49 +0,0 @@
-# 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.
-
-# Base Dockerfile for GRPC Python.
-#
-# Includes Python environment and installation dependencies.
-FROM grpc/base
-
-# Allows 'source' to work
-RUN rm /bin/sh && ln -s /bin/bash /bin/sh
-
-# Install Python development
-RUN apt-get update && apt-get install -y \
- python-all-dev \
- python3-all-dev \
- python-pip \
- python-virtualenv
-
-# Install Python packages from PyPI
-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
diff --git a/tools/dockerfile/grpc_python_base/README.md b/tools/dockerfile/grpc_python_base/README.md
deleted file mode 100644
index 1d4767ce5ce..00000000000
--- a/tools/dockerfile/grpc_python_base/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-GRPC Python Base Dockerfile
-========================
-
-Dockerfile for creating the Python GRPC development Docker instance.
-
-As of 2015/02 this
-- installs tools and dependencies needed to build GRPC Python
diff --git a/tools/dockerfile/grpc_ruby/Dockerfile b/tools/dockerfile/grpc_ruby/Dockerfile
deleted file mode 100644
index 485c34e1a81..00000000000
--- a/tools/dockerfile/grpc_ruby/Dockerfile
+++ /dev/null
@@ -1,56 +0,0 @@
-# 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.
-
-# Dockerfile for gRPC Ruby
-FROM grpc/ruby_base
-
-# Pull the latest sources
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
-# Prevent breaking the build if header files are added/removed.
-RUN make clean -C /var/local/git/grpc
-
-# Build the C core
-RUN make install_c -j12 -C /var/local/git/grpc
-
-# Build ruby gRPC and run its tests
-RUN /bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && gem update bundler && bundle && rake'
-
-# Add a cacerts directory containing the Google root pem file, allowing the
-# ruby client to access the production test instance
-ADD cacerts cacerts
-
-# Add a service_account directory containing the auth creds file
-ADD service_account service_account
-
-# Specify the default command such that the interop server runs on its known
-# testing port
-CMD ["/bin/bash", "-l", "-c", "ruby /var/local/git/grpc/src/ruby/bin/interop/interop_server.rb --use_tls --port 8060"]
diff --git a/tools/dockerfile/grpc_ruby/README.md b/tools/dockerfile/grpc_ruby/README.md
deleted file mode 100644
index eaa8382f1c7..00000000000
--- a/tools/dockerfile/grpc_ruby/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-GRPC Ruby Dockerfile
-====================
-
-Dockerfile for creating the Ruby development instances
-
-As of 2014/10 this
-- is based on the GRPC Ruby base
-- adds a pull of the HEAD gRPC Ruby source from GitHub
-- it builds it
-- runs the tests, i.e, the image won't be created if the tests don't pass
diff --git a/tools/dockerfile/grpc_ruby/build.sh b/tools/dockerfile/grpc_ruby/build.sh
deleted file mode 100755
index 11655618946..00000000000
--- a/tools/dockerfile/grpc_ruby/build.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/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.
-cp -R /var/local/git-clone/grpc /var/local/git
-
-make clean -C /var/local/git/grpc
-
-make install_c -j12 -C /var/local/git/grpc
-
-/bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && gem update bundler && bundle && rake'
diff --git a/tools/dockerfile/grpc_ruby_base/Dockerfile b/tools/dockerfile/grpc_ruby_base/Dockerfile
deleted file mode 100644
index d58eeaaf709..00000000000
--- a/tools/dockerfile/grpc_ruby_base/Dockerfile
+++ /dev/null
@@ -1,92 +0,0 @@
-# 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.
-
-# Base Dockerfile for gRPC Ruby.
-#
-# Includes Ruby installation dependencies, things that are unlikely to vary.
-FROM grpc/base
-
-# Allows 'source' to work
-RUN rm /bin/sh && ln -s /bin/bash /bin/sh
-
-# Install RVM dependencies
-RUN apt-get update && apt-get install -y \
- autoconf \
- automake \
- bison \
- curl \
- g++ \
- gawk \
- gcc \
- libc6-dev \
- libffi-dev \
- libgdbm-dev \
- libncurses5-dev \
- libreadline6-dev \
- libsqlite3-dev \
- libssl-dev \
- libtool \
- libyaml-dev \
- make \
- patch \
- pkg-config \
- procps \
- sqlite3 \
- zlib1g-dev
-
-# Install RVM, use this to install ruby
-RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 # Needed for RVM
-RUN /bin/bash -l -c "curl -L get.rvm.io | bash -s stable"
-
-# Install Ruby 2.1
-RUN /bin/bash -l -c "rvm install ruby-2.1"
-RUN /bin/bash -l -c "rvm use --default ruby-2.1"
-RUN /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
-RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
-RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
-
-# Get the source from GitHub
-RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
-RUN cd /var/local/git/grpc && \
- git pull --recurse-submodules && \
- git submodule update --init --recursive
-
-# Build and install the protobuf library
-RUN cd /var/local/git/grpc/third_party/protobuf && \
- ./autogen.sh && \
- ./configure --prefix=/usr && \
- make -j12 && make check && make install && make clean
-
-# TODO: pre-building seems unnecessary, because we need to run make clean
-# anyway to prevent build from crashing if header files are added/removed.
-# Build the C core
-RUN make static_c shared_c -j12 -C /var/local/git/grpc
-
-# Define the default command.
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_ruby_base/README.md b/tools/dockerfile/grpc_ruby_base/README.md
deleted file mode 100644
index acf1e50dbe3..00000000000
--- a/tools/dockerfile/grpc_ruby_base/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-GRPC RUBY Base Dockerfile
-========================
-
-Dockerfile for creating the Ruby gRPC development Docker instance.
-
-As of 2014/10 this
-- it installs tools and dependencies needed to build gRPC Ruby
-- it does not install gRPC Ruby itself; a separate Dockerfile that depends on
- this one will do that
diff --git a/tools/gce_setup/README.md b/tools/gce_setup/README.md
deleted file mode 100644
index 253e94daa94..00000000000
--- a/tools/gce_setup/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-GCE images for GRPC
-===================
-
-This directory contains a number of shell files used for setting up GCE images
-and instances for developing and testing gRPC.
-
-
-
-Goal
-----
-
-- provides a script to create a GCE image that has everything needed to try
-out gRPC on GCE.
-- provide another script that creates a new GCE instance from the latest image
-
-- additional scripts may be added in the future
-
-
-Usage
-------
-
-# Minimal usage (see the scripts themselves for options)
-
-$ create_grpc_dev_image.sh # creates a grpc GCE image
-$ ...
-$ new_grpc_dev_instance.sh # creates an instance using the latest grpc GCE image
-
-
-Requirements
-------------
-
-Install [Google Cloud SDK](https://developers.google.com/cloud/sdk/)
-
-Contents
---------
-
-Library scripts that contain bash functions used in the other scripts:
-- shared_setup_funcs.sh # funcs used in create_grpc_dev_image and new_grpc_dev_instance
-- gcutil_extras.sh # wrappers for common tasks that us gcutil
-- build_grpc_dist.sh # funcs building the GRPC library and tests into a debian dist
-
-GCE [startup scripts](https://developers.google.com/compute/docs/howtos/startupscript)
-- *_on_startup.sh
-
-Main scripts (as of 2014/09/04)
-- create_grpc_dev_instance.sh
-- new_grpc_dev_instance.sh
-
diff --git a/tools/gce_setup/build_images.sh b/tools/gce_setup/build_images.sh
deleted file mode 100755
index 0b1c32b7d6d..00000000000
--- a/tools/gce_setup/build_images.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/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.
-
-
-main() {
- # rebuild images on all languages on existing builder vm.
- source grpc_docker.sh
- cd ../../
-
- # build images for all languages
- languages=(cxx java go ruby node python csharp_mono)
- for lan in "${languages[@]}"
- do
- grpc_update_image $lan
- done
-}
-
-set -x
-main "$@"
diff --git a/tools/gce_setup/builder.sh b/tools/gce_setup/builder.sh
deleted file mode 100755
index 8815d082da7..00000000000
--- a/tools/gce_setup/builder.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/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.
-
-
-main() {
- # restart builder vm and wait for images to sync to it
- source grpc_docker.sh
- ./new_grpc_docker_builder.sh -igrpc-docker-builder-alt-2 -anone
- cd ../../
- sleep 3600
-
- # build images for all languages
- languages=(cxx java go ruby node python csharp_mono)
- for lan in "${languages[@]}"
- do
- grpc_update_image $lan
- done
-
- # restart client and server vm and wait for images to sync to them
- cd tools/gce_setup
- ./new_grpc_docker_builder.sh -igrpc-docker-testclients -anone
- ./new_grpc_docker_builder.sh -igrpc-docker-server -anone
- sleep 3600
-
- # launch images for all languages on server
- grpc_launch_servers grpc-docker-server
-
-}
-
-set -x
-main "$@"
diff --git a/tools/gce_setup/cloud_prod_runner.sh b/tools/gce_setup/cloud_prod_runner.sh
deleted file mode 100755
index 73437028837..00000000000
--- a/tools/gce_setup/cloud_prod_runner.sh
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/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.
-
-thisfile=$(readlink -ne "${BASH_SOURCE[0]}")
-cur=$(date "+%Y-%m-%d-%H-%M-%S")
-log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/prod_result/prod/$cur/logs
-
-main() {
- source grpc_docker.sh
- test_cases=(large_unary empty_unary ping_pong client_streaming server_streaming cancel_after_begin cancel_after_first_response empty_stream timeout_on_sleeping_server)
- auth_test_cases=(service_account_creds compute_engine_creds jwt_token_creds oauth2_auth_token per_rpc_creds)
- clients=(cxx java go ruby node csharp_mono csharp_dotnet python php)
- for test_case in "${test_cases[@]}"
- do
- for client in "${clients[@]}"
- do
- client_vm="grpc-docker-testclients"
- if [ "$client" = "csharp_dotnet" ]
- then
- client_vm="grpc-windows-interop1"
- fi
- log_file_name=cloud_{$test_case}_{$client}.txt
- if grpc_cloud_prod_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1
- then
- echo " ['$test_case', '$client', 'prod', true, 'log ']," >> /tmp/cloud_prod_result.txt
- else
- echo " ['$test_case', '$client', 'prod', false, 'log ']," >> /tmp/cloud_prod_result.txt
- fi
- gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/prod/$cur/logs/$log_file_name
- rm /tmp/$log_file_name
- done
- done
- for test_case in "${auth_test_cases[@]}"
- do
- for client in "${clients[@]}"
- do
- client_vm="grpc-docker-testclients"
- if [ "$client" = "csharp_dotnet" ]
- then
- client_vm="grpc-windows-interop1"
- fi
- log_file_name=cloud_{$test_case}_{$client}.txt
- if grpc_cloud_prod_auth_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1
- then
- echo " ['$test_case', '$client', 'prod', true, 'log ']," >> /tmp/cloud_prod_result.txt
- else
- echo " ['$test_case', '$client', 'prod', false, 'log ']," >> /tmp/cloud_prod_result.txt
- fi
- gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/prod/$cur/logs/$log_file_name
- rm /tmp/$log_file_name
- done
- done
- if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
- cat pre.html /tmp/cloud_prod_result.txt post.html > /tmp/cloud_prod_result.html
- gsutil cp /tmp/cloud_prod_result.html gs://stoked-keyword-656-output/prod_result/prod/$cur/cloud_prod_result.html
- rm /tmp/cloud_prod_result.txt
- rm /tmp/cloud_prod_result.html
- fi
-}
-
-set -x
-main "$@"
diff --git a/tools/gce_setup/cloud_prod_test.sh b/tools/gce_setup/cloud_prod_test.sh
deleted file mode 100755
index 94869ee9b60..00000000000
--- a/tools/gce_setup/cloud_prod_test.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/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.
-
-thisfile=$(readlink -ne "${BASH_SOURCE[0]}")
-test_case=$1
-client_vm=$2
-result=cloud_prod_result.$1
-cur=$(date "+%Y-%m-%d-%H-%M-%S")
-log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/prod_result/$test_case/$cur
-
-main() {
- source grpc_docker.sh
- clients=(cxx java go ruby node csharp_mono python php)
- for client in "${clients[@]}"
- do
- log_file_name=cloud_{$test_case}_{$client}.txt
- if grpc_cloud_prod_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1
- then
- echo " ['$test_case', '$client', 'prod', true, 'log ']," >> /tmp/$result.txt
- else
- echo " ['$test_case', '$client', 'prod', false, 'log ']," >> /tmp/$result.txt
- fi
- gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$log_file_name
- rm /tmp/$log_file_name
- done
- if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
- cat pre.html /tmp/$result.txt post.html > /tmp/$result.html
- gsutil cp /tmp/$result.html gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$result.html
- rm /tmp/$result.txt
- rm /tmp/$result.html
- fi
-}
-
-set -x
-main "$@"
diff --git a/tools/gce_setup/compute_extras.sh b/tools/gce_setup/compute_extras.sh
deleted file mode 100755
index a0835a12ed4..00000000000
--- a/tools/gce_setup/compute_extras.sh
+++ /dev/null
@@ -1,284 +0,0 @@
-#!/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.
-
-
-# Bash funcs shared that combine common gcutil actions into single commands
-
-# remove_instance removes a named instance
-#
-# remove_instance [="us-central1-b"]
-remove_instance() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local an_instance=$2
- [[ -n $an_instance ]] || {
- echo "$FUNCNAME: missing arg: an_instance" 1>&2
- return 1
- }
- local zone=$3
- [[ -n $zone ]] || zone="us-central1-b"
-
- gcloud --project $project --quiet \
- compute instances delete $an_instance --zone=$zone
-}
-
-# has_instance checks if a project contains a named instance
-#
-# has_instance
-has_instance() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- instances=$(gcloud --project $project compute instances list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1)
- for i in $instances
- do
- if [[ $i == $checked_instance ]]
- then
- return 0
- fi
- done
-
- return 1
-}
-
-# find_network_ip finds the ip address of a instance if it is present in the project.
-#
-# find_network_ip
-find_network_ip() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- has_instance $project $checked_instance || return 1
- gcloud --project $project compute instances list \
- | grep -e "$checked_instance\s" | sed -e 's/ \+/ /g' | cut -d' ' -f 4
-}
-
-# delete_disks deletes a bunch of disks matching a pattern
-#
-# delete_disks
-delete_disks() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local disk_pattern=$2
- [[ -n $disk_pattern ]] || {
- echo "$FUNCNAME: missing arg: disk_pattern" 1>&2
- return 1
- }
-
- trash_disks=$(gcloud --project=$project compute disks list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1 | grep $disk_pattern)
- [[ -n $trash_disks ]] && gcloud --project $project \
- --quiet compute disks delete $trash_disks
-}
-
-# has_firewall checks if a project contains a named firewall
-#
-# has_firewall
-has_firewall() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local checked_firewall=$2
- [[ -n $checked_firewall ]] || {
- echo "$FUNCNAME: missing arg: checked_firewall" 1>&2
- return 1
- }
-
- instances=$(gcloud --project $project compute firewall-rules list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1)
- for i in $instances
- do
- if [[ $i == $checked_firewall ]]
- then
- return 0
- fi
- done
-
- return 1
-}
-
-# remove_firewall removes a named firewall from a project.
-#
-# remove_firewall
-remove_firewall() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local a_firewall=$2
- [[ -n $a_firewall ]] || {
- echo "$FUNCNAME: missing arg: a_firewall" 1>&2
- return 1
- }
-
- gcloud --project $project --quiet compute firewall-rules delete $a_firewall
-}
-
-# has_network checks if a project contains a named network
-#
-# has_network
-has_network() {
- local project=$1
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
- local checked_network=$2
- [[ -n $checked_network ]] || {
- echo "$FUNCNAME: missing arg: checked_network" 1>&2
- return 1
- }
-
- instances=$(gcloud --project $project compute networks list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1)
- for i in $instances
- do
- if [[ $i == $checked_network ]]
- then
- return 0
- fi
- done
-
- return 1
-}
-
-# maybe_setup_dev_network adds a network with the given name with firewalls
-# useful to development
-#
-# - All machines can accessed internally and externally over SSH (port 22)
-# - All machines can access one another other the internal network
-# - All machines can be accessed externally via port 80, 443, 8080 and 8443
-maybe_setup_dev_network() {
- local name=$1
- [[ -n $name ]] || {
- echo "$FUNCNAME: missing arg: network name" 1>&2
- return 1
- }
-
- local project=$2
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
-
- has_network $project $name || {
- echo "creating network '$name'" 1>&2
- gcloud compute --project $project networks create $name || return 1
- }
-
- # allow instances on the network to connect to each other internally
- has_firewall $project "$name-ssh" || {
- echo "adding firewall '$name-ssh'" 1>&2
- gcloud compute --project $project firewall-rules create "$name-ssh" \
- --network $name \
- --allow tcp:22 || return 1;
- }
-
- # allow instances on the network to connect to each other internally
- has_firewall $project "$name-internal" || {
- echo "adding firewall '$name-internal'" 1>&2
- gcloud compute --project $project firewall-rules create "$name-internal" \
- --network $name \
- --source-ranges 10.0.0.0/16 --allow tcp udp icmp || return 1;
- }
-
- # allow instances on the network to be connected to from external ips on
- # specific ports
- has_firewall $project "$name-external" || {
- echo "adding firewall '$name-external'" 1>&2
- gcloud compute --project $project firewall-rules create "$name-external" \
- --network $name \
- --allow tcp:80 tcp:8080 tcp:443 tcp:8443 || return 1;
- }
-}
-
-# maybe_remove_dev_network removes a network set up by maybe_setup_dev_network
-maybe_remove_dev_network() {
- local name=$1
- [[ -n $name ]] || {
- echo "$FUNCNAME: missing arg: network name" 1>&2
- return 1
- }
-
- local project=$2
- [[ -n $project ]] || {
- echo "$FUNCNAME: missing arg: project" 1>&2
- return 1
- }
-
- has_network $project $name || {
- echo "network $name is not present"
- return 0
- }
- for i in $(gcloud compute firewall-rules list \
- | grep "$name-" | cut -d' ' -f 1)
- do
- gcloud compute --quiet firewall-rules delete $i || return 1;
- done
- gcloud compute --quiet networks delete $name
-}
-
-# find_named_ip finds the external ip address for a given name.
-#
-# find_named_ip
-find_named_ip() {
- local name=$1
- [[ -n $name ]] || { echo "$FUNCNAME: missing arg: name" 1>&2; return 1; }
- [[ $name == 'none' ]] && return 0;
-
- gcloud compute addresses list | sed -e 's/ \+/ /g' \
- | grep $name | cut -d' ' -f 3
-}
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
deleted file mode 100755
index e50706ec74b..00000000000
--- a/tools/gce_setup/grpc_docker.sh
+++ /dev/null
@@ -1,1739 +0,0 @@
-#!/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.
-
-#
-# Contains funcs that help maintain GRPC's Docker images.
-#
-# Most funcs rely on the special-purpose GCE instance to build the docker
-# instances and store them in a GCS-backed docker repository.
-#
-# The GCE instance
-# - should be based on the container-optimized GCE instance
-# [https://cloud.google.com/compute/docs/containers].
-# - should be running google/docker-registry image
-# [https://registry.hub.docker.com/u/google/docker-registry/], so that images
-# can be saved to GCS
-# - should have the GCE support scripts from this directory install on it.
-#
-# The expected workflow is
-# - start a grpc docker GCE instance
-# * on startup, some of the docker images will be regenerated automatically
-# - used grpc_update_image to update images via that instance
-
-
-# Creates the ssh key file expect by 'gcloud compute ssh' if it does not exist.
-#
-# Allows gcloud ssh commands to run on freshly started docker instances.
-_grpc_ensure_gcloud_ssh() {
- local default_key_file="$HOME/.ssh/google_compute_engine"
- if [ "$HOME" == "/" ]
- then
- default_key_file="/root/.ssh/google_compute_engine"
- fi
- [ -f $default_key_file ] || {
- ssh-keygen -f $default_key_file -N '' > /dev/null || {
- echo "could not precreate $default_key_file" 1>&2
- return 1
- }
- }
-}
-
-# Pushes a dockerfile dir to cloud storage.
-#
-# dockerfile is expected to the parent directory to a nunber of directoies each
-# of which specifies a Dockerfiles.
-#
-# grpc_push_dockerfiles path/to/docker_parent_dir gs://bucket/path/to/gcs/parent
-grpc_push_dockerfiles() {
- local docker_dir=$1
- [[ -n $docker_dir ]] || {
- echo "$FUNCNAME: missing arg: docker_dir" 1>&2
- return 1
- }
-
- local gs_root_uri=$2
- [[ -n $gs_root_uri ]] || {
- echo "$FUNCNAME: missing arg: gs_root_uri" 1>&2
- return 1
- }
-
- find $docker_dir -name '*~' -o -name '#*#' -exec rm -fv {} \; || {
- echo "$FUNCNAME: failed: cleanup of tmp files in $docker_dir" 1>&2
- return 1
- }
- gsutil cp -R $docker_dir $gs_root_uri || {
- echo "$FUNCNAME: failed: cp $docker_dir -> $gs_root_uri" 1>&2
- return 1
- }
-}
-
-# Adds the user to docker group on a GCE instance, and restarts the docker
-# daemon
-grpc_add_docker_user() {
- _grpc_ensure_gcloud_ssh || return 1;
- local host=$1
- [[ -n $host ]] || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- local project=$2
- local project_opt=''
- [[ -n $project ]] && project_opt=" --project $project"
-
- local zone=$3
- local zone_opt=''
- [[ -n $zone ]] && zone_opt=" --zone $zone"
-
-
- local func_lib="/var/local/startup_scripts/shared_startup_funcs.sh"
- local ssh_cmd="source $func_lib && grpc_docker_add_docker_group"
- gcloud compute $project_opt ssh $zone_opt $host --command "$ssh_cmd"
-}
-
-_grpc_update_image_args() {
- echo "image_args $@"
- # default the host, root storage uri and docker file root
- grpc_gs_root='gs://tmp-grpc-dev/admin/'
- grpc_dockerfile_root='tools/dockerfile'
- grpc_gce_script_root='tools/gce_setup'
- host='grpc-docker-builder'
-
- # see if -p or -z is used to override the the project or zone
- local OPTIND
- local OPTARG
- while getopts :r:d:h: name
- do
- case $name in
- d) grpc_dockerfile_root=$OPTARG ;;
- r) grpc_gs_root=$OPTARG ;;
- s) grpc_gce_script_root=$OPTARG ;;
- h) host=$OPTARG ;;
- :) continue ;; # ignore -r or -d without args, just use the defaults
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
-
- [[ -d $grpc_dockerfile_root ]] || {
- echo "Could not locate dockerfile root dir: $grpc_dockerfile_root" 1>&2
- return 1
- }
-
- [[ -d $grpc_gce_script_root ]] || {
- echo "Could not locate gce script dir: $grpc_gce_script_root" 1>&2
- return 1
- }
-
- # the suffix is required and can't be defaulted
- # the suffix has two roles:
- # - images are labelled grpc/
- # - the dockerfile is for an image is dockerfile_root/grpc_
- [[ -n $1 ]] && {
- label_suffix=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: label_suffix (e.g cxx,base,ruby,java_base)" 1>&2
- return 1
- }
-}
-
-# Updates a docker image specified in a local dockerfile via the docker
-# container GCE instance.
-#
-# the docker container GCE instance
-# - should have been setup using ./new_grpc_docker_instance
-#
-# There are options for
-#
-# call-seq:
-# grpc_update_image php_base
-# grpc_update_image cxx # rebuilds the cxx image
-#
-grpc_update_image() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # set up by _grpc_update_args
- local host grpc_gs_root grpc_gce_script_root grpc_dockerfile_root label_suffix
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- _grpc_set_project_and_zone -f _grpc_update_image_args "$@" || return 1
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local image_label="grpc/$label_suffix"
- local docker_dir_basename="grpc_$label_suffix"
- local gce_docker_dir="/var/local/dockerfile/${docker_dir_basename}"
-
- # Set up and run the SSH command that builds the image
- local func_lib="shared_startup_funcs.sh"
- local gce_func_lib="/var/local/startup_scripts/$func_lib"
- local ssh_cmd="source $gce_func_lib"
- local ssh_cmd+=" && grpc_dockerfile_refresh $image_label $gce_docker_dir"
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
-
- # Update the remote copy of the GCE func library.
- local src_func_lib="$grpc_gce_script_root/$func_lib"
- local rmt_func_lib="$host:$gce_func_lib"
- gcloud compute copy-files $src_func_lib $rmt_func_lib $project_opt $zone_opt || return 1
-
- # Update the remote version of the docker func.
- local src_docker_dir="$grpc_dockerfile_root/$docker_dir_basename"
- local rmt_docker_root="$host:/var/local/dockerfile"
- gcloud compute copy-files $src_docker_dir $rmt_docker_root $project_opt $zone_opt || return 1
-
- gcloud compute $project_opt ssh $zone_opt $host --command "$ssh_cmd"
-}
-
-# gce_has_instance checks if a project contains a named instance
-#
-# call-seq:
-# gce_has_instance
-gce_has_instance() {
- local project=$1
- [[ -n $project ]] || { echo "$FUNCNAME: missing arg: project" 1>&2; return 1; }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- instances=$(gcloud --project $project compute instances list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1)
- for i in $instances
- do
- if [[ $i == $checked_instance ]]
- then
- return 0
- fi
- done
-
- echo "instance '$checked_instance' not found in compute project $project" 1>&2
- return 1
-}
-
-# gce_find_internal_ip finds the ip address of a instance if it is present in
-# the project.
-#
-# gce_find_internal_ip
-gce_find_internal_ip() {
- local project=$1
- [[ -n $project ]] || { echo "$FUNCNAME: missing arg: project" 1>&2; return 1; }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- gce_has_instance $project $checked_instance || return 1
- gcloud --project $project compute instances list \
- | grep -e "$checked_instance\s" \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 4
-}
-
-# sets the vars grpc_zone and grpc_project
-#
-# to be used in funcs that want to set the zone and project and potential
-# override them with
-#
-# grpc_zone
-# - is set to the value gcloud config value for compute/zone if that's present
-# - it defaults to asia-east1-a
-# - it can be overridden by passing -z
-#
-# grpc_project
-# - is set to the value gcloud config value for project if that's present
-# - it defaults to stoked-keyword-656 (the grpc cloud testing project)
-# - it can be overridden by passing -p
-_grpc_set_project_and_zone() {
- # can be set to 1 by passing -n in the args
- dry_run=0
-
- # by default; grpc_zone == gcloud config value || asia-east1-a
- # - can be assigned via -p in the args
- grpc_zone=$(gcloud config list compute/zone --format text \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 2)
- # pick a known zone as a default
- [[ $grpc_zone == 'None' ]] && grpc_zone='asia-east1-a'
-
- # grpc_project == gcloud config value || stoked-keyword-656
- # - can be assigned via -z in the args
- grpc_project=$(gcloud config list project --format text \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 2)
- # pick an known zone as a default
- [[ $grpc_project == 'None' ]] && grpc_project='stoked-keyword-656'
-
- # see if -p or -z is used to override the the project or zone
- local OPTIND
- local OPTARG
- local arg_func
- while getopts :np:z:f: name
- do
- case $name in
- f) declare -F $OPTARG >> /dev/null && {
- arg_func=$OPTARG;
- } || {
- echo "-f: arg_func value: $OPTARG is not defined"
- return 2
- }
- ;;
- n) dry_run=1 ;;
- p) grpc_project=$OPTARG ;;
- z) grpc_zone=$OPTARG ;;
- :) [[ $OPT_ARG == 'f' ]] && {
- echo "-f: arg_func provided" 1>&2
- return 2
- } || {
- # ignore -p or -z without args, just use the defaults
- continue
- }
- ;;
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
- [[ -n $arg_func ]] && $arg_func "$@"
-}
-
-# construct the flags to be passed to the binary running the test client
-#
-# call-seq:
-# flags=$(grpc_interop_test_flags )
-# [[ -n flags ]] || return 1
-grpc_interop_test_flags() {
- [[ -n $1 ]] && { # server_ip
- local server_ip=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: server_ip" 1>&2
- return 1
- }
- [[ -n $1 ]] && { # port
- local port=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: port" 1>&2
- return 1
- }
- [[ -n $1 ]] && { # test_case
- local test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
- echo "--server_host_override=foo.test.google.fr --server_host=$server_ip --server_port=$port --test_case=$test_case"
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_interop_test after option flags
-# are removed
-#
-# five args are expected, in order
-# - test_case
-# - host
-# - client to run
-# - server_host
-# - server type
-grpc_interop_test_args() {
- [[ -n $1 ]] && { # test_case
- test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- cxx|go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd="grpc_interop_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd="grpc_interop_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # grpc_server
- grpc_server=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: grpc_server" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # server_type
- case $1 in
- cxx) grpc_port=8010 ;;
- go) grpc_port=8020 ;;
- java) grpc_port=8030 ;;
- node) grpc_port=8040 ;;
- python) grpc_port=8050 ;;
- ruby) grpc_port=8060 ;;
- csharp_mono) grpc_port=8070 ;;
- csharp_dotnet) grpc_port=8070 ;;
- *) echo "bad server_type: $1" 1>&2; return 1 ;;
- esac
- shift
- } || {
- echo "$FUNCNAME: missing arg: server_type" 1>&2
- return 1
- }
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_cloud_prod_test after option flags
-# are removed
-#
-# three args are expected, in order
-# - test_case
-# - host
-# - client to run
-grpc_cloud_prod_test_args() {
- [[ -n $1 ]] && { # test_case
- test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- cxx|go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd="grpc_cloud_prod_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd="grpc_cloud_prod_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_cloud_prod_auth_test after option flags
-# are removed
-#
-# three args are expected, in order
-# - test_case
-# - host
-# - client to run
-grpc_cloud_prod_auth_test_args() {
- grpc_gen_test_cmd="grpc_cloud_prod_auth_"
- [[ -n $1 ]] && { # test_case
- test_case=$1
- test_command="service_account_creds"
- if [ "$test_case" == "compute_engine_creds" ]
- then
- test_command="compute_engine_creds"
- fi
- grpc_gen_test_cmd+=$test_command
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- cxx)
- if [ "$test_case" == "oauth2_auth_token" ]
- then
- grpc_gen_test_cmd="grpc_cloud_prod_auth_compute_engine_creds"
- fi
- grpc_client_platform='Docker'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-}
-
-_grpc_sync_scripts_args() {
- grpc_gce_script_root='tools/gce_setup'
-
- local OPTIND
- local OPTARG
- while getopts :s: name
- do
- case $name in
- s) grpc_gce_script_root=$OPTARG ;;
- :) continue ;; # ignore -s without args, just use the defaults
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
-
- [[ -d $grpc_gce_script_root ]] || {
- echo "Could not locate gce script dir: $grpc_gce_script_root" 1>&2
- return 1
- }
-
- [[ $# -lt 1 ]] && {
- echo "$FUNCNAME: missing arg: host1 [host2 ... hostN]" 1>&2
- return 1
- }
- grpc_hosts="$@"
-}
-
-# Updates the latest version of the support scripts on some hosts.
-#
-# call-seq;
-# grpc_sync_scripts , ..
-#
-# Updates the GCE docker instance
-grpc_sync_scripts() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- local grpc_hosts grpc_gce_script_root
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_sync_scripts_args "$@" || return 1
-
- local func_lib="shared_startup_funcs.sh"
- local gce_func_lib="/var/local/startup_scripts/$func_lib"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local host
- for host in $grpc_hosts
- do
- gce_has_instance $grpc_project $host || return 1;
- # Update the remote copy of the GCE func library.
- local src_func_lib="$grpc_gce_script_root/$func_lib"
- local rmt_func_lib="$host:$gce_func_lib"
- gcloud compute copy-files $src_func_lib $rmt_func_lib $project_opt $zone_opt || return 1
- done
-}
-
-grpc_sync_images_args() {
- [[ $# -lt 1 ]] && {
- echo "$FUNCNAME: missing arg: host1 [host2 ... hostN]" 1>&2
- return 1
- }
- grpc_hosts="$@"
-}
-
-# Updates all the known docker images on a host..
-#
-# call-seq;
-# grpc_sync_images , ..
-#
-# Updates the GCE docker instance
-grpc_sync_images() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- local grpc_hosts
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_sync_images_args "$@" || return 1
-
- local func_lib="/var/local/startup_scripts/shared_startup_funcs.sh"
- local cmd="source $func_lib && grpc_docker_pull_known"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local host
- for host in $grpc_hosts
- do
- gce_has_instance $grpc_project $host || return 1;
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && continue # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
- done
-}
-
-_grpc_show_servers_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-}
-
-
-# Shows servers on a docker instance.
-#
-# call-seq;
-# grpc_show_servers
-# E.g
-# grpc_show_server grpc-docker-server
-#
-# Shows the grpc servers on the GCE instance
-grpc_show_servers() {
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_show_servers
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_show_servers_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local cmd="sudo docker ps | grep grpc_"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && continue # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
-}
-
-_grpc_build_proto_bins_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- host='grpc-docker-builder'
- }
-}
-
-# grpc_build_proto_bins
-#
-# - rebuilds the dist_proto docker image
-# * doing this builds the protoc and the ruby, python and cpp bins statically
-#
-# - runs a docker command that copies the built protos to the GCE host
-# - copies the built protos to the local machine
-grpc_build_proto_bins() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_build_proto_bins_args
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_build_proto_bins_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
-
- # rebuild the dist_proto image
- local label='dist_proto'
- grpc_update_image -- -h $host $label || return 1
-
- # run a command to copy the generated archive to the docker host
- local docker_prefix='sudo docker run -v /tmp:/tmp/proto_bins_out'
- local tar_name='proto-bins*.tar.gz'
- local cp_cmd="/bin/bash -c 'cp -v /tmp/$tar_name /tmp/proto_bins_out'"
- local cmd="$docker_prefix grpc/$label $cp_cmd"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" || return 1
-
- # copy the tar.gz locally
- local rmt_tar="$host:/tmp/$tar_name"
- local local_copy="$(pwd)"
- gcloud compute copy-files $rmt_tar $local_copy $project_opt $zone_opt || return 1
-}
-
-_grpc_build_debs_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- host='grpc-docker-builder'
- }
-}
-
-# grpc_build_debs
-#
-# - rebuilds the build_debs
-# * doing this builds a deb package for release debs
-#
-# - runs a docker command that copies the debs from the docker instance to its
-# host
-# - copies the debs from the host to the local machine
-grpc_build_debs() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_build_debs_args
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_build_debs_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
-
- # Update the remote distpackages_dir
- local src_dist_dir='tools/distpackages'
- local rmt_dist_dir="$host:~"
- gcloud compute copy-files $src_dist_dir $rmt_dist_dir $project_opt $zone_opt || return 1
-
- # rebuild the build_deb image
- local label='build_deb'
- grpc_update_image -- -h $host $label || return 1
-
- # run a command to copy the debs from the docker instance to the host.
- local docker_prefix='sudo docker run -v /tmp:/tmp/host_deb_out'
- local cp_cmd="/bin/bash -c 'cp -v /tmp/deb_out/*.deb /tmp/host_deb_out'"
- local cmd="$docker_prefix grpc/$label $cp_cmd"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" || return 1
-
- # copy the debs from host machine to the local one.
- local rmt_debs="$host:/tmp/*.deb"
- local local_copy="$(pwd)"
- gcloud compute copy-files $rmt_debs $local_copy $project_opt $zone_opt || return 1
-}
-
-_grpc_launch_servers_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
- [[ -n $1 ]] && {
- servers="$@"
- } || {
- servers="cxx java go node ruby python csharp_mono"
- echo "$FUNCNAME: no servers specified, will launch defaults '$servers'"
- }
-}
-
-# Launches servers on a docker instance.
-#
-# call-seq;
-# grpc_launch_servers [server1 server2 ...]
-# E.g
-# grpc_launch_server grpc-docker-server ruby node
-#
-# Restarts all the specified servers on the GCE instance
-# If no servers are specified, it launches all known servers
-grpc_launch_servers() {
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_launch_servers_args
- local host servers
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_launch_servers_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- # launch each of the servers in turn
- for server in $servers
- do
- local grpc_port
- case $server in
- cxx) grpc_port=8010 ;;
- go) grpc_port=8020 ;;
- java) grpc_port=8030 ;;
- node) grpc_port=8040 ;;
- python) grpc_port=8050 ;;
- ruby) grpc_port=8060 ;;
- csharp_mono) grpc_port=8070 ;;
- *) echo "bad server_type: $1" 1>&2; return 1 ;;
- esac
- local docker_label="grpc/$server"
- local docker_name="grpc_interop_$server"
-
- cmd="sudo docker kill $docker_name > /dev/null 2>&1; "
- cmd+="sudo docker rm $docker_name > /dev/null 2>&1; "
- cmd+="sudo docker run -d --name $docker_name"
- cmd+=" -p $grpc_port:$grpc_port $docker_label"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
- done
-}
-
-# Launch servers on windows.
-grpc_launch_windows_servers() {
- local host='grpc-windows-interop1'
- local killcmd="ps -e | grep Grpc.IntegrationTesting | awk '{print \\\$1}' | xargs kill -9"
- echo "killing all servers and clients on $host with command $killcmd"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host \"$killcmd\""
-
- local cmd='cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug && ./Grpc.IntegrationTesting.Server.exe --use_tls=true --port=8070'
- # gcloud's auto-uploading of RSA keys doesn't work for Windows VMs.
- # So we have a linux machine that is authorized to access the Windows
- # machine through ssh and we use gcloud auth support to logon to the proxy.
- echo "will run:"
- echo " $cmd"
- echo "on $host (through grpc-windows-proxy)"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host '$cmd'"
-}
-
-# Runs a test command on a docker instance
-#
-# The test command is issued via gcloud compute
-#
-# There are 3 possible results:
-# 1. successful return code and finished within 60 seconds
-# 2. failure return code and finished within 60 seconds
-# 3. command does not return within 60 seconds, in which case it will be killed.
-test_runner() {
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- if [ "$grpc_client_platform" != "Windows" ]
- then
- echo "will run:"
- echo " $cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" &
- else
- # gcloud's auto-uploading of RSA keys doesn't work for Windows VMs.
- # So we have a linux machine that is authorized to access the Windows
- # machine through ssh and we use gcloud auth support to logon to the proxy.
- echo "will run:"
- echo " $cmd"
- echo "on $host (through grpc-windows-proxy)"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host '$cmd'" &
- fi
- #
- PID=$!
- echo "pid is $PID"
- for x in {0..5}
- do
- if ps -p $PID
- then
- # test command has not returned and 60 seconds timeout has not reached
- sleep 10
- else
- # test command has returned, return the return code from the test command
- wait $PID
- local ret=$?
- echo " test runner return $ret before timeout"
- return $ret
- fi
- done
- kill $PID
- echo "test got killed by timeout return as failure"
- return 1
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_interop_test \
-#
-#
-# N.B: server_name defaults to 'grpc-docker-server'
-#
-# requirements:
-# host is a GCE instance running docker with access to the gRPC docker images
-# server_name is a GCE docker instance running the gRPC server in docker
-# test_name is one of the named gRPC tests [http://go/grpc_interop_tests]
-# client_type is one of [cxx,go,java,php,python,ruby]
-# server_type is one of [cxx,go,java,python,ruby]
-#
-# it assumes:
-# that each grpc-imp has a docker image named grpc/, e.g, grpc/java
-# a test is run using $ docker run 'path/to/interop_test_bin --flags'
-# the required images are available on
-#
-# server_name [default:grpc-docker-server] is an instance that runs the
-# server on the standard test port for the
-#
-# each server_type runs it tests on a standard test port as follows:
-# cxx: 8010
-# go: 8020
-# java: 8030
-# node: 8040
-# python: 8050
-# ruby: 8060
-# csharp: 8070
-#
-# each client_type should have an associated bash func:
-# grpc_interop_gen__cmd
-# the func provides the dockerized commmand for running client_type's test.
-# If no such func is available, tests for that client type cannot be run.
-#
-# the flags for running a test are the same:
-#
-# --server_host= --server_port= --test_case=<...>
-grpc_interop_test() {
- _grpc_ensure_gcloud_ssh || return 1;
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
-
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # grpc_interop_test_args
- local test_case host grpc_gen_test_cmd grpc_server grpc_port grpc_client_platform
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_interop_test_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local addr=$(gce_find_internal_ip $grpc_project $grpc_server)
- [[ -n $addr ]] || return 1
- local flags=$(grpc_interop_test_flags $addr $grpc_port $test_case)
- [[ -n $flags ]] || return 1
- cmd=$($grpc_gen_test_cmd $flags)
- [[ -n $cmd ]] || return 1
-
- test_runner
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_cloud_prod_test
-#
-# requirements:
-# host is a GCE instance running docker with access to the gRPC docker images
-# test_name is one of the named gRPC tests [http://go/grpc_interop_tests]
-# client_type is one of [cxx,go,java,php,python,ruby]
-#
-# it assumes:
-# that each grpc-imp has a docker image named grpc/, e.g, grpc/java
-# a test is run using $ docker run 'path/to/interop_test_bin --flags'
-# the required images are available on
-#
-# each client_type should have an associated bash func:
-# grpc_cloud_prod_gen__cmd
-# the func provides the dockerized commmand for running client_type's test.
-# If no such func is available, tests for that client type cannot be run.
-grpc_cloud_prod_test() {
- _grpc_ensure_gcloud_ssh || return 1;
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
-
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # grpc_cloud_prod_test_args
- local test_case host grpc_gen_test_cmd grpc_client_platform
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_cloud_prod_test_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local test_case_flag=" --test_case=$test_case"
- cmd=$($grpc_gen_test_cmd $test_case_flag)
- [[ -n $cmd ]] || return 1
-
- test_runner
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_cloud_prod_auth_test